使用Android 9.0动态更改应用程序图标后,我的应用程序在最近的应用程序中消失



我使用活动别名动态更改应用程序的图标,导致我的应用程序在最近的应用程序中消失。

清单

<activity-alias
android:enabled="false"
android:icon="@mipmap/ic_launcher_11"
android:label="@string/app_name"
android:name=".ui.launcher_d_eleven"
android:targetActivity=".ui.SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
private void enableComponent(PackageManager pm, String launcher) {
ComponentName newComponent = new ComponentName(this, launcher);
pm.setComponentEnabledSetting(newComponent,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}

private void disableComponent(PackageManager pm, String launcherAlias) {
LoggerUtil.e("zkx disable Launcher = " + launcherAlias);
ComponentName deComponent = new ComponentName(this, launcherAlias);
pm.setComponentEnabledSetting(deComponent,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
}

打得有点晚了,但我得到了一个解决方案,您需要添加一个指向 MainActivity 的默认别名而不更改图标并删除 Main Activity 的意图过滤器清单中的 Launcher 属性。 所以你的主活动看起来像这样

<activity
android:name=".MainActivity"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>

并添加如下所示的默认别名

<activity-alias
android:name=".Default"
targetActivity = ".MainActivity"
enabled = true>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

然后,当您不启用/禁用 MainActivity 时,您可以禁用别名并将其替换为另一个别名 这就是对我有用的

最新更新