2015-06-29 2 views
0

Мое приложение имеет активность, запускаемую BroadcastReceiver, когда получена передача android.intent.action.BOOT_COMPLETED.Android FLAG_SHOW_WHEN_LOCKED и блокировка блокировки клавиатуры

Активность должна быть показана на весь экран над Защитой от блокировки клавиатуры (безопасная). В работе используется тема Theme.NoTitleBar.Fullscreen, установленная в манифесте приложения и WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED, чтобы поместить Keyguard.

Я не пытаюсь заменить или отключить блокировку клавиатуры любым способом. Активность должна показывать только некоторую диагностическую информацию об устройстве, и она должна оставаться активной до тех пор, пока пользователь не закроет ее.

Итак, устройство загружается, обычно появляется клавиатурная защита и запускается активность через несколько секунд. Активность отображается на клавиатуре в полноэкранном режиме без заголовка. Все это отлично работало на моих тестовых устройствах Sony и Samsung.

Сегодня я тестировал приложение на устройстве LG G2 (Android 4.4.2) и заметил странную проблему. Проблема в том, что полноэкранная активность отменяется (приостанавливается), а keyguard снова воспитывается.

Я провел половину дня, проходя через код и пытаясь выяснить, что вызывает подобное поведение. Затем, наконец, я заметил, что моя активность отклоняется каждый раз, когда системное уведомление отображается в строке заголовка. В моем случае уведомление «Battery full» и «Отключить, чтобы сэкономить аккумулятор». У меня не было возможности проверить, но, вероятно, это произойдет и с другими уведомлениями.

Есть ли способ подавить системные уведомления или игнорировать, поэтому активность в полноэкранном режиме не будет приостановлена?

ответ

0

Попробуйте с ниже фрагментами кода,

Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
    this.sendBroadcast(intent); 

Это вещание, когда действие пользователя должно запросить диалог временной системы уволить. Некоторые примеры диалогов временных систем являются окно-тень уведомления и диалог недавние задачи

См ACTION_CLOSE_SYSTEM_DIALOGS

+0

Я пробовал, не работал. Странно то, что когда у меня кабель не подключен (не заряжается), тогда все работает нормально. Я могу даже прокручивать экранную область и строку состояния, и она прекрасно выглядит в полноэкранном режиме, не отпуская ее. – jjarv

+0

Оказалось, что это не связано напрямую с панелью уведомлений. После нескольких тестов я узнал, что устройство LG имеет настройку: Подключение к ПК -> USB-соединение -> «Попросить подключиться». Когда этот флажок снят, все работает нормально, если проверено действие полноэкранного режима отклонено. Любые идеи, как контролировать это? – jjarv

Смежные вопросы