У моего приложения есть действие, которое запускает процесс oauth-авторизации в браузере, и, наконец, браузер получает перенаправление на URL "appname: //com.appname", который вызывает мою активность.(активность объявила, что может просматривать такие URL)
Все в порядке, но если пользователь нажимает «Назад», он возвращается в веб-браузер.Я хочу очистить стек истории при повторном вызове активности, чтобы сделать это действие корнем и вершиной в этой задаче.
Какие флаги или хуки можно использовать для этого случая?
Я нашел только одно уродливое решение: receive appname: //com.appname ссылается на специальное действие «Gag», которое запустит основное действие на своем onResume.
Я попытался сделать основное действие «singleTask»,запустить браузер в новой задаче, установить флаги NO_HISTORY и EXLUDE_FROM_RECENTS, CLEAR_TOP, установить clearTaskOnLaunch = "true".Перепробовал много комбинаций этих флагов и тегов в манифесте - ничего не помогает.
Я решил эту проблему:
1) set clearTaskOnLaunch = "true" в AndroidManifest.xml
2) Запустите браузер в новой задаче (с FLAG_ACTIVITY_NEW_TASK) и завершите текущийдействие (чтобы закончить текущую задачу).
3) переопределить onBackPressed: вместо завершения этого действия вызовите moveTaskToBack (true);
когда пользователь нажимает назад - задание (браузер находится в его корне) переходит в фоновый режим, и пользователь видит свой домашний экран.
когда пользователь снова запускает приложение - оно открывается из существующего экземпляра, очищает задачу и становится ее корнем (поскольку clearTaskOnLaunch = "true")