У меня полноэкранная захватывающая активность, которая должна оставаться в полноэкранном режиме, пока пользователь явно не выйдет. (Например, подумайте о чем-то вроде просмотра видео в полноэкранном режиме Youtube).
Тем не менее, я недавно заметил, что много нежелательных действий может нарушить поведение моего приложения. Например, многие теневые "бесплатные приложения" имеют тенденцию создавать прозрачные действия в полноэкранном режиме и показывать рекламу, немедленно нарушая работу пользователя. Всплывающие всплывающие окна с полным экраном из определенных приложений, которые фактически являются полноэкранными действиями, также мгновенно нарушают мою активность.
Есть ли способ избежать этих действий, крадущих фокус, или способ удержать их за весь полноэкранный режим, чтобы он не нарушил мой полноэкранный режим? Другими словами, как я всегда держу свою деятельность всегда, когда какое-то изгоевское приложение решает начать свою деятельность над моей?
Их не нужно отменять, но "поставить на место" до тех пор, пока пользователь не выйдет из полноэкранного режима.
Метод, который приходит на ум, FLAG_ACTIVITY_REORDER_TO_FRONT
бы в том, чтобы возобновить мою деятельность с FLAG_ACTIVITY_REORDER_TO_FRONT
тот момент, когда он теряет фокус, но это не будет выглядеть красиво для пользователя :(
Примечание. Если вы хотите попробовать самостоятельно, я нашел приложение, которое "имитирует" запуск этих запугивающих действий. Загрузить это - https://play.google.com/store/apps/details?id=com.nlucas.popupnotificationslite&hl=ru
Всякий раз, когда вы получаете уведомления, он запускает прозрачную активность в полноэкранном режиме. Попробуйте посмотреть видео Youtube и получить 10 уведомлений от кого-то и представить себе, как это будет отвлекать.
ОБНОВЛЕНИЕ: Выполнение этого не работает:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (!hasFocus) {
Intent i = new Intent(getBaseContext(), MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
startActivity(i);
}