Я реализовал два activity-alias
, которые пользователь должен иметь возможность включать или отключать во время выполнения.
<activity-alias
android:name=".ui.alias.open_location"
android:targetActivity=".ui.activity.location"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity-alias>
Я не хочу, чтобы они были включены в начале, чтобы не загромождать экран приложения на устройстве пользователя. Но во время выполнения пользователь должен иметь возможность включить псевдоним. Я делаю это через PackageManager
:
PackageManager pm = getApplicationContext().getPackageManager();
ComponentName componentName = new ComponentName(context, ".ui.alias.open_location");
pm.setComponentEnabledSetting(componentName,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Это работает как прелесть в начале, но псевдоним снова отключается, когда установлено обновление моего приложения. Как я могу запретить системе переписывать включенное состояние манифестом? Я не хочу, чтобы пользователь плавал с Launcher в начале, и я не хочу, чтобы пользователь воссоздавал все ярлыки псевдонимов после обновления.
Мне кажется, что мне нужно что-то похожее на PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
, но только для разрешенного состояния.
Спасибо!