动态更改应用桌面图标

来源:互联网 发布:广西广电网络官网 编辑:程序博客网 时间:2024/05/01 12:21

基础部分:
activity-alias:可以用于创建多个不同的入口
android:enabled:默认为 true,创建多个入口时,先修改为 false。
android:icon:应用图标
android:label:应用名称
android:name:activity-alias 的别名
android:targetActivity:入口目标 Activity
android.intent.action.MAIN:决定最先启动的 Activity
android.intent.category.LAUNCHER:决定应用是否在显示在程序列表中

实际应用:

MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private Button btn_change11;    private Button btn_change22;    private ComponentName mChange11;    private ComponentName mChange22;    private ComponentName mDefault;    private PackageManager packageManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //初始化布局        initView();        //初始化ComponentName         initChange();    }    private void initChange() {        mDefault=getComponentName();        //注意new ComponentName 时填写 activity-alias 的别名时需要加上包名        mChange11=new ComponentName(getBaseContext(),"com.test.change_icon.change11");        mChange22=new ComponentName(getBaseContext(),"com.test.change_icon.change22");        packageManager=getApplicationContext().getPackageManager();    }    private void initView() {        btn_change11=findViewById(R.id.btn_change11);        btn_change22=findViewById(R.id.btn_change22);        btn_change11.setOnClickListener(this);        btn_change22.setOnClickListener(this);    }    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.btn_change11:                changeIcon11();                break;            case R.id.btn_change22:                changeIcon22();                break;            default:                break;        }    }    private void changeIcon22() {        disableComponent(mDefault);        disableComponent(mChange11);        enableComponent(mChange22);    }    private void changeIcon11() {        disableComponent(mDefault);        disableComponent(mChange22);        enableComponent(mChange11);    }    private void enableComponent(ComponentName componentName) {        packageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);    }    private void disableComponent(ComponentName componentName) {        packageManager.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);    }}

Manifesr.xml

<application        android:allowBackup="true"        android:icon="@drawable/s3"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme" >        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity-alias            android:name=".default"            android:enabled="false"            android:icon="@drawable/s1"            android:label="@string/app_name"            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=".change11"            android:enabled="false"            android:icon="@drawable/s1"            android:label="更换图标1"            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=".change22"            android:enabled="false"            android:icon="@drawable/s2"            android:label="更换图标2"            android:targetActivity=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity-alias>    </application>

参考文章 “ 徐宜生 Android群英传 “