动态更改桌面app图标
清单中
里的设置 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
<activity-alias
android:name=".maoyu"
android:enabled="false"
android:icon="@mipmap/maoyu"
android:label="maoyu"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
<activity-alias
android:name=".uu"
android:enabled="true"
android:icon="@mipmap/uu"
android:label="uu"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>将原先的activity标签下的
<category android:name="android.intent.category.LAUNCHER"/>
删掉添加`
标签 android:name=”.uu” 随便起的名字
android:enabled=”true” true表示默认就使用这个,桌面图标就是这个,应用名就是上面那个name
android:icon=”@mipmap/uu” 下面两个不用解释了
android:targetActivity=”.MainActivity”>
上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25private void switchIcon(boolean isUU) {
try {
//要跟manifest的activity-alias 的name保持一致
String maoyu = "com.aidebar.demo.maoyu";
String uu = "com.aidebar.demo.uu";
PackageManager pm = getPackageManager();
ComponentName uuComponentName = new ComponentName(getApplicationContext(), uu);
int uuState = isUU ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
//如果是UU,那么设置成enabled
if (pm.getComponentEnabledSetting(uuComponentName) != uuState) {
pm.setComponentEnabledSetting(uuComponentName, uuState, PackageManager.DONT_KILL_APP);
}
ComponentName maoyuComponentName = new ComponentName(getApplicationContext(), maoyu);
//如果是UU,其他的都要设为disabled
int maoyuState = !isUU ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
: PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
if (pm.getComponentEnabledSetting(maoyuComponentName) != maoyuState) {//新状态跟当前状态不一样才执行
pm.setComponentEnabledSetting(maoyuComponentName, maoyuState, PackageManager.DONT_KILL_APP);
}
} catch (Exception e){
}
}可以在每次打开的时候判断下日期,如果是双十二啦,圣诞啦,就可以调用这方法,来改变应用图标啦,但是要注意试了几个测试机,都要十来秒才会有变化,在这十秒内点击桌面图标会出现该应用未正确安装的提示
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 七夜的小屋!