В моем приложении есть активность, которая запускается BroadcastReceiver при получении трансляции android.intent.action.BOOT_COMPLETED.
Активность должна отображаться в полноэкранном режиме через Keyguard (безопасно). Активность использует тему Theme.NoTitleBar.Fullscreen, установленную в манифесте приложения и WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, чтобы поместить Keyguard позади.
Я не пытаюсь заменить или отключить блокировку клавиатуры. Активность должна просто отображать некоторую диагностическую информацию об устройстве и оставаться активной до тех пор, пока пользователь не закроет ее.
Итак, устройство загружается, обычно появляется keyguard и через несколько секунд также запускается активность. Активность красиво отображается поверх клавиатуры в полноэкранном режиме без строки заголовка. Все это отлично работало на моих тестовых устройствах Sony и Samsung.
Сегодня я тестировал приложение на устройстве LG G2 (Android 4.4.2) и заметил странную проблему. Проблема в том, что полноэкранная активность закрывается (приостанавливается), а блокировка клавиатуры снова активируется.
Я потратил полдня на изучение кода и пытался понять, что вызывает такое поведение. Затем, наконец, я заметил, что моя активность отклоняется каждый раз, когда системное уведомление отображается в строке заголовка. В моем случае уведомление «Батарея заряжена» и «Отключите для экономии заряда батареи». У меня не было возможности проверить, но, вероятно, то же самое произойдет и с другими уведомлениями.
Есть ли способ подавить системные уведомления или игнорировать их, чтобы полноэкранная активность не была приостановлена?