Как отключить KeyGuard и отобразить активность пользователю, когда приемник Screen_ON срабатывает?
Вопрос
Как я могу отключить KeyGuard, когда широковещательный приемник активируется Screen_on, так что когда он возникает, пользователь видит деятельность, которую я начал за ним? (Деятельность работает уже ...)
Я пытался следующий код из широковещательного приемника, вызванного экраном ...
KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
myLock = myKeyGuard.newKeyguardLock();
myLock.disableKeyguard();
Похоже, это не работает, как есть. Когда я включаю экран, я все еще должен вручную разблокировать на картезах на телефоне, чтобы раскрыть свою деятельность по ней.
Решение 2
Я думаю, что я понял, что я сделал не так. Похоже, это был просто ошибка метки в моем манифесте при использовании разрешения Disable_keyguard. Теперь он работает правильно, чтобы я исправил манифест.
Другие советы
Я бы порекомендовал использовать флаги окна Deveriske_keyguard или Show_when_locked, если у вас есть окно, которое нужно перейти на вершину блокировки экрана прямо при пробуждении.
Как вы используете это следующим образом (вызывается в OnCreate перед настройкой макета)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
Я не вижу работы на Keeguard Repion (и она устарела). Что работает для меня, состоит в том, чтобы захватить постоянный PARTIAL_WAKE_LOCK
что я никогда не выпускаю. Это предотвращает поистине засыпание устройства и, таким образом, позволяет избежать активированного экрана блокировки.
Затем каждый раз, когда экран выключается, я слушаю это уведомление и разбудить устройство резервному. Работает на всех устройствах, на которых я проверил.
Я понимаю, что это убьет аккумулятор устройства довольно быстро, поэтому вы должны использовать это очень экономно и чувствительно.