应用覆盖安装后桌面图标消失问题

应用覆盖安装后桌面图标消失问题

一、现象

当一个 app 有两个入口 Activity(标记了 main、launcher 的 Activity,如集成了 LeakCanary 的 app),安装后,桌面上会出现两个图标。

当在 androidManifest 中删除一个 activity 或将其 disable,再覆盖安装,桌面上的两个图标都会消失(有些机器会这样,如 mix2;在模拟器上只有被删除或者 disable 的那个没了)。

通过代码设置 Activity disable,也会让图标都消失(mix2 上,大约 13s 后)。

二、恢复

(测试机型:mix2)

2.1 通过代码

大约十几秒后生效

val componentName = ComponentName(context, "com.gdeer.gdtesthub.MyActivity")val packageManager = context?.packageManagerpackageManager?.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP) 2.2 通过 adb

即时生效

debug 版:

// 恢复 MyActivityadb shell pm enable com.gdeer.gdtesthub/.MyActivity// 恢复所有入口 Activity,先 disable 再 enableadb shell pm disable com.gdeer.gdtesthubadb shell pm enable com.gdeer.gdtesthub

release 版:

// 恢复所有入口 Activity,先 disable-user 再 enableadb shell pm disable-user com.gdeer.gdtesthubadb shell pm enable com.gdeer.gdtesthub

release 版使用 disable,会报 Security exception: Shell cannot change component state,要用 disable-user。 disable-user 也不能改变单个 Activity,只能针对包名使用。


比丘资源网 » 应用覆盖安装后桌面图标消失问题

发表回复

提供最优质的资源集合

立即查看 了解详情