动态改变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等你领取。


Android 动态改变app图标_第1张图片

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

更多相关文章

  1. 使用android studio 查看 android 的源代码
  2. ANDROID源代码结构
  3. 《第一行代码Android》学习总结第十三章 Android编程技巧
  4. Android 内核源代码交叉编译
  5. [转]Android DNS 代码分析
  6. 哪里可以下载Android的源代码
  7. 第一章 开始启程,你的第一行Android代码

随机推荐

  1. android之simpleAdaper应用
  2. Uploading audio, video or image files
  3. Android sqlite 数据库在java代码中的增
  4. android Fragment
  5. Android使用DigitalClock进行定时抢购
  6. Android 使用FTP上传文件
  7. android 源代码错误
  8. 如何在Android平台上创建自定义的Cordova
  9. Android 开发源码分享
  10. Android 判断输入框是否为空