Это невозможно, и разработчики Android заявили, что не хотят, чтобы приложение меняло настройки пользователя. Тем не менее, существует обходное решение, основанное на том, как Android поддерживает эти настройки.
Сделайте ваш манифест выглядеть следующим образом:
<activity
android:name="MyLauncherActivity"
android:exported="true" />
<activity-alias
android:name="LauncherAlias1"
android:targetActivity="MyLauncherActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
<activity-alias
android:name="LauncherAlias2"
android:enabled="false"
android:targetActivity="MyLauncherActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
Для простоты, я оставил дополнительные атрибуты, которые не относятся к задаче.
Во всяком случае, как только ваш манифест выглядит так, вы можете очистить запуск по умолчанию, используя такой код:
PackageManager pm = getPackageManager();
ComponentName cn1 = new ComponentName("com.mypackage", "com.mypackage.LauncherAlias1");
ComponentName cn2 = new ComponentName("com.mypackage", "com.mypackage.LauncherAlias2");
int dis = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
if(pm.getComponentEnabledSetting(cn1) == dis) dis = 3 - dis;
pm.setComponentEnabledSetting(cn1, dis, PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(cn2, 3 - dis, PackageManager.DONT_KILL_APP);
Включив один псевдоним и отключение другого, вы причиняете Android воспринимать параметры пользователя, как поменяв , как если бы вы установили одну пусковую установку и удалили другую. Таким образом, пользователю будет предложено снова выбрать следующий раз, когда они нажимают кнопку «домой». Этот подход работает независимо от того, чья пусковая установка является текущим дефолтом.
Я понимаю, разработчики Android не желающих приложение изменять пользовательские настройки, но отсутствие центрального места для управления предпочитаемые приложения просто смешно – lisovaccaro
я скорее согласен, но короткие укоренения устройства нет ничего не поделаешь Это. –
Я сделал больше тестов (добавил белый фон к теме), и тема работает, поскольку я вижу белый фон, однако анимации нет (активность просто исчезает и исчезает). Я понятия не имею, почему это происходит – lisovaccaro