原文地址:https://juejin.im/post/5c36f2226fb9a049b7809170
要点内容:
第一点:设置原activity的enabled 为false
<!--原Activity enabled固定为false,且不通过代码进行设置 这个MainActivity设置enabled为false后就不能再通过显式intent调用了,会有报错信息。-->
<activity
android:enabled="false"
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
第二点:固定设置一个默认的别名,用来替代原Activity
<activity-alias
android:name="DefaultAlias"
android:enabled="true"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher_round"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
第三点:设置自己想要的别名 和图标
<!--别名1,后面要加的话按这种样式加就行了,没有什么影响,只是注意要在代码中进行切换,不要直接在清单文件中切换。-->
<activity-alias
android:name="NewActivity1"
android:enabled="false"
android:label="Alias1"
android:icon="@mipmap/ic_launcher"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
第四点:在代码中千万不要操作activity 类似这种
public void setActivityA() {
PackageManager packageManager = getPackageManager();
packageManager.setComponentEnabledSetting(new ComponentName(this, getPackageName() +
".NewActivity1"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager
.DONT_KILL_APP);
packageManager.setComponentEnabledSetting(new ComponentName(this, getPackageName() +
".NewActivity2"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager
.DONT_KILL_APP);
/*这里千万不要直接操作原来的activity 如果要回到原来的 可以操作自己设置的用来代替原activity的默认值*/
// packageManager.setComponentEnabledSetting(new ComponentName(this, getPackageName() +
// ".MainActivity"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager
// .DONT_KILL_APP);
}