其实很简单,利用 AndroidManifest.xml 文件中的 <activity-alias> 标签即可实现。

<activity-alias> 介绍


大家知道,对于 Activity 组件,使用时需要在 Manifest 文件中通过 标签注册 name、theme、intent-filter 等相关属性信息,然后通过 Intent 操作便可以启动对应 Activity。殊不知,我们还能通过 <activity-alias> 标签为每个 Activity 注册一个“别名”,通过这个别名也能启动对应的目标 Activity。我们来看一下这个“别名”能够设置哪些属性:

 
  1. <activity-alias android:enabled=["true" | "false"]

  2. android:exported=["true" | "false"]

  3. android:icon="drawable resource"

  4. android:label="string resource"

  5. android:name="string"

  6. android:permission="string"

  7. android:targetActivity="string" >

  8. . . .

  9. </activity-alias>

可以看出,大部分属性与 <Activity> 标签的属性一致,简单分析一下:

  • android:enabled 属性,布尔类型,是否开启别名设置,默认值为 true;

  • android:exported 属性,布尔类型,是否支持其他应用通过这个别名访问目标 Activity,默认值为 true;

  • android:icon 和 label 属性:类似 <activity> 标签,表示目标 Activity 的显示图标和标签;

  • android:name 属性:Activity 别名,在 <activity> 标签中, name 属性必须与对应 Activity 文件的名字保持一致,而这里的别名可任意设置,保证唯一性即可;

  • android:permission 属性:权限设置,对别名的使用加以限制,详细属性值参考开发者官网对 权限部分 的说明;

  • android:targetActivity 属性:指定别名能够启动的目标 Activity,注意,属性值一定要对应到 <activity> 标签中的 name 属性,并且该<activity> 标签一定要位于 <activity-alias> 标签前面;

实战演练


了解完 <activity-alias> 的基本知识之后,就知道动态修改桌面图标和应用名称是怎么做到的了。其实就是给整个应用的入口 Activity 添加一个 <activity-alias> 标签,并设置预先设计好的替代桌面图标和应用名称,并配置相同的<intent-filter> 属性,动态启动即可。

举例说明一下,Manafest 文件关键代码如下:

注意看,在别名设置中添加了 <intent-filter> 标签,与 targetActivity 的设置一致:

  • android.intent.action.MAIN 表示这个别名设置是整个应用的入口,应用启动时第一个创建的就是这个 Activity;

  • android.intent.category.LAUNCHER 表示这个别名设置将出现在桌面 Launcher 应用上;

至于其他属性,<activity> 标签中也有相应设置,只是通常我们在<application> 标签中统一设置而已,然后<activity> 标签默认继承<application> 标签中的设置。上述代码还有一点需要注意的是,android:enabled 属性设为 false,否则运行时将会在桌面上出现两个相同功能但不同显示的应用图标和名称。

然后在 Activity 中动态切换,通过 PackageManager 对象提供的setComponentEnabledSetting() 方法关闭当前 Component 组件,并启动别名对应的 Component 组件即可,参考代码如下:

然后不要忘了在 Manifest 文件中添加权限:

 <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>

图片代码


清单文件:
<activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
<!--        动态修改桌面图标-->
<activity-aliasandroid:name=".hk1"android:enabled="false"android:icon="@mipmap/xui_h"android:label="@string/app_name"android:roundIcon="@mipmap/xui_h_round"android:targetActivity=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity-alias>

button按钮处理:

//动态改变APP图标
private void switchIcon(boolean isChange) {try {//要跟manifest的activity-alias 的name保持一致String hk1 = "com.me.hk.hk1";PackageManager pm = getPackageManager();if (isChange) {pm.setComponentEnabledSetting(getComponentName(),PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);pm.setComponentEnabledSetting(new ComponentName(this, hk1),PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);} else {pm.setComponentEnabledSetting(getComponentName(),PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);pm.setComponentEnabledSetting(new ComponentName(this, hk1),PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);}

原文转载:https://blog.csdn.net/growing_tree/article/details/106618067

Android 动态改变桌面图标相关推荐

  1. Android动态修改桌面图标新坑总结

    一.优秀文章概述 下面的文章描述动态修改桌面图标的基本方法,并且总结了很多坑及解决方案,以下是在此文章基础上的补充 <Android动态修改应用图标和名称> 二.第一个新坑 Android ...

  2. Android如何动态更换桌面图标(巨坑)

    转载https://blog.csdn.net/pangjl1982/article/details/83308512 1.Android如何动态更换桌面图标 1.1使用场景       APP,在中 ...

  3. Android之动态更换桌面图标

    Android之动态更换桌面图标 文章链接:http://blog.csdn.net/qq_16628781/article/details/69054325 知识点 动态更换APP 桌面icon的引 ...

  4. Android音乐App桌面图标制作以及启动页面开发(简易音乐 一)

    Android音乐App桌面图标制作以及启动页面开发( 简易音乐 一 ) 关于 效果 第一步 第二步 第一步 修改SplashAcitivity的布局页面 第二步 修改androidmanifest. ...

  5. Android 动态使用Iconfont图标

    Android 动态使用Iconfont图标 Android 动态使用Iconfont图标 问题 思路 附 Android 动态使用Iconfont图标 问题 每当进行增删操作后,Iconfont图标 ...

  6. Android动态改变TextView字体颜色

    Android动态改变TextView字体颜色 分类: Android 2012-06-04 21:56 141人阅读 评论(0) 收藏 举报 androidcolorslayout 必须在在res/ ...

  7. Android 动态改变SeekBar进度条颜色与滑块颜色

    Android 动态改变SeekBar进度条颜色与滑块颜色 遇到个动态改变SeekBar进度条颜色与滑块颜色的需求,如图: 有的是根据不同进度改变成不同颜色. 对于这个怎么做呢?大家都知道设置下pro ...

  8. Android 如何改变应用图标

    Android 如何改变应用图标 ISO和android应用图标 新建项目 开始适配 更换默认图标 更换为字母 更换引应用图标背景色 设置对应版本图标 这世间就是忍一口气,风平浪静,退一步海阔天空:忍 ...

  9. Android中动态更换桌面图标Icon(记录)

    问题描述:支付宝.美团.淘宝之类的在某些节日的时候,桌面图标会进行自动进行变化,但是并没有进行APP更新之类的,想做这样的效果,怎么弄? 解决方案: (1)使用activity-alias来定义多个程 ...

最新文章

  1. 以太坊、Hyperledger Fabric和Corda,哪个更好?
  2. vue源码之响应式数据
  3. csp怎么给线条描边_PS的四种“描边”方式你都知道吗?Photoshop小知识
  4. viewpager默认界面_使用默认方法的界面演变–第一部分:方法
  5. 【数据结构与算法】栈与队列
  6. 钱学森做的试卷你见过吗?100年前学霸的笔记,工整得像打印的
  7. weka中算法说明[转]
  8. android手动亮度调节,背光闪烁,自动背光调节
  9. 小米集团本周再回购1920万港元股票
  10. Android Studio 使用艺术 - Android Windows 开发环境配置
  11. [转]在C#中使用MSHTML的高级支持接口
  12. Python之字符串格式化
  13. 超星高级语言程序设计实验作业 (实验03 模块化程序设计)
  14. 16G kingston U盘 解除写保护
  15. android二维码扫描、读取、识别、生成、带logo
  16. 超全面UI基础设计规范
  17. 新手入门C语言常见的问题总结(一)
  18. 绵阳计算机维修价格,绵阳台式电脑维修
  19. 中国企业在欧洲专利申请量高居第一名,凸显技术研发实力持续提升
  20. 手机app测试用例怎么写?手机app测试点有哪些?没有水分,错过绝对后悔

热门文章

  1. 机器学习中的编码:Index编码、OneHot编码和Multiple编码及其对比
  2. AD原理图复制 InvalidParameter Exception Occurred In Copy报错解决方法
  3. Linux环境下服务启动命令汇总
  4. 文思创新软件技术有限公司
  5. nDCG笔记及在spark中的实现
  6. Oracle数据库之数据库的简单查询
  7. CentOS 7关闭防火墙命令
  8. JWT 进阶 -- JJWT
  9. 物联网开发框架Niagara - Part1概述
  10. 优质的衣帽间sketchup模型素材推荐,不容错过