一、現象
當一個 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?.packageManager
packageManager?.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP)
2.2 通過 adb
即時生效
// 恢復 MyActivity
adb shell pm enable com.gdeer.gdtesthub/.MyActivity
// 恢復所有入口 Activity,先 disable 再 enable
adb shell pm disable com.gdeer.gdtesthub
adb shell pm enable com.gdeer.gdtesthub