Android动态修改图标

原理是在Manifest里给主Activity(intent-filter中添加 <action android:name=“android.intent.action.MAIN”/> 和 <category android:name=“android.intent.category.LAUNCHER”/> 的Activity)增加别名(activity-alias),在别名中设置不同的icon。在Java/Kotlin代码中通过改变enable state来改变App 的图标,做法如下在这里插入图片描述
在这里插入图片描述
注意:一、不要直接修改Activity的enable state,否则若将主Activity的enable state设置为false,会导致切换图标的过程中,App退回到Launcher页面。因此,在Manifest中将主Activity的 <category android:name=“android.intent.category.LAUNCHER”/> 注释掉,而给其设置一个默认的activity alias,通过修改activity alias的enable state来修改App的图标。

二、该方法也适用于动态修改Launcher中App的名字,通过label字段修改即可。

三、该方法的一些不足:
a. 只能在客户端中预设图标,通过服务端下发字段来改变图标,无法通过服务端直接下发图标。
b. 二级菜单launcher(原生安卓,一加,Sony等)每次切换Icon导致用户在桌面的快捷方式(shortcut)消失,部分机型只用一级菜单的机型,icon位置会发生改变。
c. 更换图标后,在android studio上覆盖安装,无法自动启动App,(可以手动启动)。将图标换回原始图标,才可以自动启动。(不影响线上用户更新App)
d. Android 系统动态替换app icon 会有延迟(10S左右)。在替换过程点击icon,无法打开App,提示“应用未安装”(小米Launcher 无此问题)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值