Я разрабатываю приложение для Android, которое имеет 2 метода запуска. Один из них - обычный способ, нажав значок приложения на телефоне. Другой метод - это глубокая ссылка с веб-сайта.Android: Recents начинает некорректную деятельность
Deeplink также отправляет некоторые данные, которые приложение должно выполнять «материал». Однако это следует делать только один раз. Когда операция депипликации завершена, она начинает основное действие. Однако, когда я нажимаю (на устройстве) и открываю приложение из recents, он снова открывает операцию deeplink.
Я мог исключить действие deeplink из ретентатов манифеста. Это также исключает основную активность из последних приложений, этого не должно быть.
Как предотвратить запуск активности deeplink из недавних приложений?
Мои Manifest:
<activity
android:name="MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:launchMode="singleTask"
android:theme="@style/AppTheme">
</activity>
<activity
android:name="DeeplinkActivity"
android:label="@string/app_name"
android:noHistory="true"
android:screenOrientation="portrait"
android:launchMode="singleTask"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="app_name" android:host="test" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="test" android:path="/" android:scheme="app_name" />
</intent-filter>
</activity>
Для переключения на MainActivity я делаю следующее:
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
EDIT: Это сообщение было помечено как дубликат с: Android: Starting app from 'recent applications' starts it with the last set of extras used in an intent
Однако, что после относится к одной и той же деятельности. Я хочу изменить корневую активность, поэтому, когда я запускаю приложение из recents, он не запускает DeeplinkActivity. Да, в качестве обходного пути я могу проверить флаг Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY. Но каждый раз, когда пользователь запускает приложение из recents, DeeplinkActivity открывается, пока он больше не нужен.
Установка и/или удаление значений целевого назначения не работает. Я использую информацию из getIntent(). GetData()
Если вы все еще чувствуете, что это дубликат, пожалуйста, объясните.
Я открыл вопрос. –