Мое приложение исчезает в последних приложениях после динамического изменения значка приложения с 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);
}

1 ответ

Немного поздно, но у меня есть решение для этого, вам нужно добавить псевдоним по умолчанию, указывающий на MainActivity, не меняя значок, и удалить свойство Launcher в манифесте фильтра намерений Main Activity. Итак, ваша 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, вы отключаете псевдоним и заменяете его другим псевдонимом. Это сработало для меня.

Другие вопросы по тегам