Android: неожиданное поведение последних приложений

Наше приложение имеет 2 MainActivity деятельности – MainActivity (связанный с иконкой Launcher) и AuxActivity для обработки событий URI.

Я вижу проблему с этим сценарием, когда мое приложение изначально вышло:

  1. Откройте браузер, нажмите URI, чтобы запустить AuxActivity .

  2. AuxActivity завершает (call finish ()), пользователь возвращается в браузер.

  3. Пользователь открывает последние приложения (долгое нажатие на дом) и выбирает мое приложение.

Вместо запуска MainActivity , я вижу, что AuxActivity запускается с тем же намерением, что и представляет клик URI ( android.intent.action.VIEW ).

Теперь вместо шага 3, если пользователь должен открыть мое приложение через значок «Домашний экран», я вернусь к MainActivity , как и ожидалось.

Как я могу сделать шаг 3 для запуска MainActivity ?

Основываясь на предложении Тима, как насчет добавления

 android:excludeFromRecents="true" 

К перечислению auxActivity в манифесте? Это помогает?

Поместите это в AuxActivity's onCreate:

 if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) > 0) { // do something different eg launch MainActivity } 

Не уверен, что это сработает, но вы также можете попробовать:

андроид: noHistory = "истина"

Независимо от того, следует ли удалить действие из стека активности и завершить его (его метод finish ()), когда пользователь переходит от него, и он больше не отображается на экране – «true», если он должен быть завершен, и «false», если не. Значение по умолчанию неверно". Значение «истина» означает, что активность не оставит исторической следы. Он не останется в стеке действий для задачи, поэтому пользователь не сможет вернуться к нему. Этот атрибут был введен в API Level 3.