Android动态修改图标

原理是在Manifest里给主Activity(intent-filter中添加 的Activity)增加别名(activity-alias),在别名中设置不同的icon。在Java/Kotlin代码中通过改变enable state来改变App 的图标,做法如下Android动态修改图标_第1张图片
Android动态修改图标_第2张图片
注意:一、不要直接修改Activity的enable state,否则若将主Activity的enable state设置为false,会导致切换图标的过程中,App退回到Launcher页面。因此,在Manifest中将主Activity的 注释掉,而给其设置一个默认的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 无此问题)

你可能感兴趣的:(日记)