简体   繁体   English

Android以编程方式更改应用程序图标

[英]Android change app icon programatically

I have seen other android apps have a selection for app icon, and then the changes are reflected in the app drawer and on home screen instantly. 我已经看到其他android应用有一个应用图标选择,然后更改立即反映在应用抽屉和主屏幕上。

How do these apps change app icon like this? 这些应用如何更改这样的应用图标?

First prepare your new app icons for each resolution and put them into the corresponding mipmap folders. 首先,为每种分辨率准备新的应用程序图标,并将它们放入相应的mipmap文件夹中。

Then use activity-alias, for example, in your AndroidManifest.xml, edit this: 然后使用活动别名,例如,在您的AndroidManifest.xml中,编辑以下内容:

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

    <activity-alias
        android:name=".MainAliasActivity"
        android:enabled="false"
        android:icon="@mipmap/ic_launcher_fight"
        android:label="Main Alias Activity"
        android:targetActivity=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity-alias>

Add the following code when you want to change your app icon 当您想更改应用程序图标时,添加以下代码

        PackageManager pm = getPackageManager();
        pm.setComponentEnabledSetting(
                getComponentName(),
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);
        pm.setComponentEnabledSetting(
                new ComponentName(this, "YOUR PACKAGE.MainAliasActivity"),
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);

To reset the app icon you can use the same way. 要重置应用程序图标,您可以使用相同的方法。

GitHub Project here GitHub项目在这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM