Не работают действия corss-приложения с taskAffinity в Android 11

У меня есть два приложения, приложение A и приложение B, теперь я хочу запустить действие в приложении B из приложения A, режим запуска этого действия — «singleTask».

Порядок: действие X (приложение A) ———› действие Y (приложение B) ———› действие Z (приложение B, launchMode="singleTask")

В конфигурации AndroidManifest по умолчанию в диспетчере задач будут отображаться два приложения. Я надеюсь, что пользователи могут видеть только метку приложения A в диспетчере задач, поэтому при переключении между задачами они не нажимают приложение B. До Android 11 (Android R) , я использую атрибут taskAffinity, как показано ниже, для решения этой проблемы.

Как Activity X, так и Activity Z, добавьте это в AndroidManifet.xml.

android:taskAffinity="com.abc.xxx”

Таким образом, эти действия могут быть размещены в одной задаче действия. В Android 10 это работает.

Однако это больше не работает в Android 11. И я не нашел никаких новых функций, относящихся к этой сцене.

Как сделать так, чтобы в задаче активности ApplicationA размещалась активность ApplicationB, режим запуска которого — singleTask? Разрешить пользователям видеть только одну задачу (ApplicationA) в диспетчере задач.


person YikFung    schedule 10.11.2020    source источник


Ответы (1)


Вы не можете. И вы не должны. Причина, по которой это работало раньше, заключается в том, что taskAffinity превосходил (переопределял) launchMode. Очевидно, они изменили/исправили это в Android 11.

Если Activity объявлен как singleTask, это сообщает Android, что Activity хочет быть корнем Activity в своей собственной задаче. Когда вы запускаете этот Activity, он должен запускаться в новой задаче, а не в той же задаче, что и Activity, выполняющая запуск.

В более ранних версиях Android Activity запускался в той же задаче, если Activity имел тот жеtaskAffinity, что и корень Activity запускаемой задачи. Это никогда не было четко задокументировано, поэтому было неясно, было ли это ошибкой или функцией. Похоже, они наконец-то изменили/исправили это в Android 11.

Смотрите мои ответы на эти связанные вопросы:

person David Wasser    schedule 10.11.2020
comment
Итак, как я могу позволить пользователям видеть только одну задачу, когда они переключаются между задачами? - person YikFung; 11.11.2020
comment
Удалите специальный режим запуска singleTask из объявления <activity>. Обычно этот режим запуска не требуется. - person David Wasser; 11.11.2020