Android动态修改应用图标和名称

原文地址: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);
    }

推荐阅读更多精彩内容