动态改变app图标

代码实现如下:

                
我们先来简单的分析一下上面的代码:
android:icon="@mipmap/app_logo"android:label="@string/app_name"

这两个属性是用来设置图标和标签

android:name=".newsLuncherActivity"

别名的name设置成一个activity,尽量和一个的name保持一致,如果不设置成一个activity的名字,部分手机会有问题。

android:enabled="false"

是否是显示别名,默认是true。

android:targetActivity=".MainActivity"

指定别名启动的activity,一定要与原来启动入口activity的name保持一致,并且要在的标签下面。

添加标签后,具体启动方式,我们可以在服务器端设置一个开关,当请求到要更改桌面图标时,我们就可以通过 PackageManager 对象提供的 setComponentEnabledSetting()方法关闭当前 Component 组件,并启动别名对应的 Component 组件,为了使得图标能够快速更换,我们可以加上重启Luncher应用代码,name是自己定义个类名,记住一定要传全路径,如:

com.ming.abner.changelauncher.newsLuncherActivityprivate void changeLuncher(String name) {        PackageManager pm = getPackageManager();        pm.setComponentEnabledSetting(getComponentName(),                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);        pm.setComponentEnabledSetting(new ComponentName(MainActivity.this, name),                PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);        //Intent 重启 Launcher 应用        Intent intent = new Intent(Intent.ACTION_MAIN);        intent.addCategory(Intent.CATEGORY_HOME);        intent.addCategory(Intent.CATEGORY_DEFAULT);        List resolves = pm.queryIntentActivities(intent, 0);        for (ResolveInfo res : resolves) {            if (res.activityInfo != null) {                ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);                am.killBackgroundProcesses(res.activityInfo.packageName);            }        }    }

别名可以定义多个,对于不同时候就可以动态去更换不同的图标。

权限设置:

希望可以帮助大家
如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议
Android技术交流群:591625129

源码Demo获取方法

关注「网罗开发」公众号 ,有iOS demo、RN 视频以及demo、Android demo等你领取。


小专栏:https://xiaozhuanlan.com/u/fanbaoying

更多相关文章

  1. Activity的四种启动模式和onNewIntent()
  2. Android源码阅读分析:ActivityManagerService分析(二)——Activity
  3. Android中Activity启动模式详解
  4. Android中Activity启动模式详解
  5. Android中launcherMode="singleTask"详解【android源码解析六】
  6. android如何实现开机自动启动Service或app
  7. android wifi
  8. Android中Activity启动模式详解
  9. android java代码的启动:app_process

随机推荐

  1. Android三种定时器的简单使用
  2. 【Android】数据存储之Sharepreference
  3. 浅析Android加载字体包及封装的方法
  4. 【Android】listView动态处理item
  5. Android(安卓)自定义Dialog的实现
  6. How to store an image file to SQliteDB
  7. Android(安卓)6.0蓝牙读写和扫描权限问题
  8. android 使用Http的Get方式读取网络数据
  9. Android(安卓)逆向实战
  10. Android(安卓)真实 简历