Изменить начальную Activity программно
Всем привет, подскажите, есть ли способ определять стартовую Activity при запуске приложения? Т.е., я имею ввиду, что у меня есть Activity1 и Activity2, по умолчанию в манифесте стартовая это Activity1, но иногда(когда выполняется определённое условие) мне нужно стартовать с Activity2. Можете подсказать что-нибудь?
Ответы (2 шт):
Возможно сделать стартовой Activity3, в которой будет проверяться условие и осуществляться переход либо в Activity1 либо в Activity2
Есть такой вариант:
Атрибут манифеста: android:enabled="false" - отключает активность изначально.
Объявляем обе активности точками входа, но одну отключаем:
<activity android:name=".Activity1">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Activity2"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Затем в коде мы можем менять состояние этого атрибута:
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName(context, Activity1.class),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(new ComponentName(context, Activity2.class),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
И таким образом у нас меняется стартовая активность. Но сделать это мы можем, естественно, только заранее - то есть мы выбираем с какой активности приложение запустится в следующий раз.