Настройка запуска по умолчанию для продолжения последней активности
Я работаю в режиме киоска в Android, и мое приложение имеет несколько действий. Допустим, они представляют собой Деятельность A, Деятельность B, Деятельность C.
Я устанавливаю Launcher по умолчанию в Activity A. Вот как я это делаю.
PackageManager packageManager = getPackageManager();
ComponentName componentName = new ComponentName(this, FakeLauncherActivity.class);
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
Intent selector = new Intent(Intent.ACTION_MAIN);
selector.addCategory(Intent.CATEGORY_HOME);
selector.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(selector);
packageManager.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);
Но моим основным занятием является Занятие B. Поэтому, когда я нахожусь в Занятии B или Занятии C, кнопка "Домой" перезапускает Занятие A. Вместо того, чтобы делать это, я хочу, чтобы оно продолжало мое последнее Занятие и не перезапускало его из Занятия A.
Вот мой манифест:
<application
android:name="com.bambulabs.codebase.Models.Global"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:logo="@mipmap/ic_launcher"
android:theme="@style/MyMaterialTheme"
tools:replace="android:icon">
<activity
android:name="com.bambulabs.codebase.ActivityA"
android:configChanges="locale"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.SCAN_RESULTS"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</activity>
<activity
android:name="com.bambulabs.codebase.ActivityB"
android:configChanges="locale"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait"
android:launchMode="singleTask">
</activity>
<activity
android:name="com.bambulabs.codebase.ActivityC"
android:configChanges="locale"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait">
</activity>
</application>
Как я могу это сделать?
Примечание: я не хочу использовать дополнительную активность, чтобы решить, где продолжить приложение.
1 ответ
Я нашел ответ!
Все, что я сделал, это переместил атрибут launchMode="singleInstance" на уровень приложения в манифесте и сделал ActivityA launchMode = "singleTop"!
Вот рабочий файл манифеста:
<application
android:name="com.bambulabs.codebase.Models.Global"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:logo="@mipmap/ic_launcher"
android:theme="@style/MyMaterialTheme"
tools:replace="android:icon"
android:launchMode="singleInstance">
<activity
android:name="com.bambulabs.codebase.ActivityA"
android:configChanges="locale"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.SCAN_RESULTS"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</activity>
<activity
android:name="com.bambulabs.codebase.ActivityB"
android:configChanges="locale"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait">
</activity>
<activity
android:name="com.bambulabs.codebase.ActivityC"
android:configChanges="locale"
android:label="@string/app_name"
android:screenOrientation="sensorPortrait">
</activity>
</application>
Для получения дополнительной информации об атрибуте launchMode: https://inthecheesefactory.com/blog/understand-android-activity-launchmode/en