1、AndroidManifest.xml文件的配置
<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"
android:icon="@mipmap/ic_launcher"
android:label="图标1"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity-alias
android:name=".icon2"
android:targetActivity=".MainActivity"
android:enabled="false"
android:icon="@mipmap/apple"
android:label="图标2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<activity-alias
android:name=".icon3"
android:targetActivity=".MainActivity"
android:enabled="false"
android:icon="@mipmap/orange"
android:label="图标3">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
</application>
2、逻辑代码动态控制
获取:ComponentName
icon1 =new ComponentName(getApplication(),"com.example.zf.icondemo.MainActivity");
icon2 = new ComponentName(getApplication(), "com.example.zf.icondemo.icon2");
icon3 = new ComponentName(getApplication(), "com.example.zf.icondemo.icon3");
动态控制应用图标及应用名:
enableComponent(icon1);
disableComponent(icon2);
disableComponent(icon3);
/**
* 通过PackageManager 的setComponentEnabledSetting方法控制组件的开启禁用。
* 开启
* @param componentName
*/
private void enableComponent(ComponentName componentName){
mPm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
}
/**
* 禁用
* @param componentName
*/
private void disableComponent(ComponentName componentName){
mPm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED ,
PackageManager.DONT_KILL_APP);
}
ps:
通过PackageManager 的setComponentEnabledSetting方法控制组件的开启禁用。
public void setComponentEnabledSetting (ComponentName componentName, int newState, int flags)
componentName:组件名称
newState:组件新的状态,可以设置三个值,分别是如下:
不可用状态:COMPONENT_ENABLED_STATE_DISABLED
可用状态:COMPONENT_ENABLED_STATE_ENABLED
默认状态:COMPONENT_ENABLED_STATE_DEFAULT
flags:行为标签,值可以是DONT_KILL_APP或者0。 0说明杀死包含该组件的app
这样进入应用点击相应图标就会变化图标和应用名。会有一定的延迟。并且在变化成功之前图标点击没效果,成功之后点击才会进入程序。
在清单文件中设置enable=“true” (默认为true)会生成三个程序入口。即在手机桌面显示三个应用图标。