• 清单中里的设置

    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
    25
    private 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){
    }
    }

    可以在每次打开的时候判断下日期,如果是双十二啦,圣诞啦,就可以调用这方法,来改变应用图标啦,但是要注意试了几个测试机,都要十来秒才会有变化,在这十秒内点击桌面图标会出现该应用未正确安装的提示