Android 动态更改icon图标
程序员文章站
2022-07-03 16:53:51
一.添加别名指定主activity
一.添加别名指定主activity
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zl.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--88会员节专属Activity别名-->
<activity-alias
android:name=".tag_12"
android:enabled="false"
android:icon="@mipmap/ic_launcher_88"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<!--双11专属Activity别名-->
<activity-alias
android:name=".tag_11"
android:enabled="false"
android:icon="@mipmap/ic_launcher_11_11"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
</application>
</manifest>
二.判断时间切换图标
//检查图标并更换
public void updateIcon() {
mPackageManager = getApplicationContext().getPackageManager();
//获取当前的ComponentName
ComponentName currentName = getComponentName();
if (isDouble11() && !currentName.getClassName().equals("com.zl.myapplication.tag_11")) {
ComponentName double11 = new ComponentName(getBaseContext(), "com.zl.myapplication.tag_11");
disableComponent(currentName);
enableComponent(double11);
Log.e("2020", "双11");
} else if (isDouble12() && !currentName.getClassName().equals("com.zl.myapplication.tag_12")) {
ComponentName double12 = new ComponentName(getBaseContext(), "com.zl.myapplication.tag_12");
disableComponent(currentName);
enableComponent(double12);
Log.e("2020", "双12");
}
}
//是否双11期间
public boolean isDouble11() {
Calendar calendar = Calendar.getInstance();
calendar.set(2020, 10 - 1, 1);
long startTime = calendar.getTime().getTime();
calendar.set(2020, 11 - 1, 11);
long endTime = calendar.getTime().getTime();
long nowTime = System.currentTimeMillis();
if (startTime < nowTime && nowTime < endTime) {
return true;
}
return false;
}
//是否双12期间
public boolean isDouble12() {
Calendar calendar = Calendar.getInstance();
calendar.set(2020, 12 - 1, 1);
long startTime = calendar.getTime().getTime();
calendar.set(2020, 12 - 1, 12);
long endTime = calendar.getTime().getTime();
long nowTime = System.currentTimeMillis();
if (startTime < nowTime && nowTime < endTime) {
return true;
}
return false;
}
//启用组件
public void enableComponent(ComponentName componentName) {
mPackageManager.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
//隐藏组件
public void disableComponent(ComponentName componentName) {
mPackageManager.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
https://pan.baidu.com/s/1aBBY_qUwbS_8K9bpSnvn0A 提取码:6kqe
本文地址:https://blog.csdn.net/qq_39238370/article/details/109360765