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

3

我使用activity-alias来动态更改应用程序的图标,导致我的应用程序在最近的应用程序中消失。

清单

<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);
}

找到解决方案了吗? - undefined
1个回答

1
有点晚了,但我找到了解决方案。您需要添加一个默认别名,指向MainActivity,而不更改图标,并在主Activity的intent-filter清单中删除Launcher属性。因此,您的MainActivity应该像这样:
<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时,您会禁用别名并将其替换为另一个别名。这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接