244 字
1 分钟
Android 动态切换应用图标
- Android 动态切换应用图标
- 如支付宝和淘宝经常在节日:比如 618/双11 时修改应用图标
- <activity-alias android:name="BicycleActivity" android:icon="@mipmap/ic_launcher_2" android:enabled="false" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias>
- 先在 manifest 中创建一个 activity-alias,将targetActivity设置为启动页
- 另外记得将 enabled设置为false,否则将会创建两个图标
- 然后在代码中:
- val packageManager = packageManager packageManager.setComponentEnabledSetting( ComponentName(this, "$packageName.BicycleActivity"), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP ) packageManager.setComponentEnabledSetting( ComponentName(this, "$packageName.MainActivity"), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP )
- 其中第三个参数如果是 PackageManager.DONT_KILL_APP,则会在应用退出后修改应用图标,如果设置为0则会马上杀死当前应用
- 已知问题,如果修改了图标,在 Android Studio 安装的时候提示:
 
- adb 启动应用时找不到 MainActivity,因为启动页已经被改成 BicycleActivity,不影响实际用户使用
 
- 上面的那个参数传成 0后,我在模拟器又一次发现图标都没有了,导致用户找到不应用图标了,可能是 Launcher 的 bug
 
- 上面的那个参数传成 

