<!--系统默认入口-->
<activity android:name=".login_moudle.StartActivity"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<!--<category android:name="android.intent.category.LAUNCHER"/> 注释掉LAUNCHER-->
</intent-filter>
</activity>
<!--
icon-桌面图标
name-名称可以随意
label-可以省略 修改应用名称
targetActivity-要跳转的activity(主activity)
enabled-不要动态修改
-->
<!--默认图标-->
<activity-alias
android:icon="@mipmap/ic_launcher"
android:name="default"
android:label="@string/app_name"
android:targetActivity=".login_moudle.StartActivity"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<!--要修改的图标-->
<activity-alias
android:icon="@mipmap/ic_launcher_round"
android:name="icon1"
android:label="@string/call_110"
android:targetActivity=".login_moudle.StartActivity"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
public class StartActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
final ComponentName iconCom = new ComponentName(StartActivity.this, "com.guoshikeji.driver95128.icon1");//这里填写的是 包名+activity-alias中的name
final ComponentName defaultCom = new ComponentName(StartActivity.this, "com.guoshikeji.driver95128.default");
findViewById(R.id.bn_default).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {//切换为icon1图标
enableComponent(iconCom);
disableComponent(defaultCom);
}
});
findViewById(R.id.bn_icon1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {//切换为default图标
enableComponent(defaultCom);
disableComponent(iconCom);
}
});
}
//不可用状态:COMPONENT_ENABLED_STATE_DISABLED
//可用状态:COMPONENT_ENABLED_STATE_ENABLED
//默认状态:COMPONENT_ENABLED_STATE_DEFAULT
private void enableComponent(ComponentName componentName) {
getPackageManager().setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0);
}
private void disableComponent(ComponentName componentName) {
getPackageManager().setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
// 0立即生效会杀掉进程 DONT_KILL_APP约10秒后生效 android10也会杀掉进程 10以下不会
}
}
以上方式测试android10以下可以完美实现替换图标功能,android10测试仍会杀掉进程,我个人的处理方式是在android10的手机上监听应用退到后台时进行更换,不影响应用内在线版本升级