Виджеты Android в keyguard, обработка событий onClick

Я надеюсь, что этот вопрос не задавался раньше, но я не смог найти решение своей проблемы. У меня есть виджет, который также используется для keyguard. Я хочу добавить обработчик onClick для своего виджета. Нет проблем, когда виджет находится на главном экране, активность начинается нормально. Но на keyguard активность запускается, но не отображается, потому что устройство заблокировано.

Я не хочу отключать блокировку клавиатуры с такими флагами, как WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED и WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD. Я просто хочу, чтобы показывалось маленькое окно, где меня просят разблокировать устройство, как будто оно открывается, когда вы нажимаете на несколько виджетов keyguard, например, для приложения электронной почты Android.

Есть ли другой флаг для достижения этого? Или я должен что-то сделать с моим намерением, призванным открыть активность? Спасибо за помощь.


person Erich    schedule 29.03.2015    source источник


Ответы (1)


Для включения или отключения экрана блокировки в Android нам нужно получить экземпляр keyBoard Manager, используя getSystemService(). Синтаксис такой,

KeyguardManager keyguardManager = 
    (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);  
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);  

Для блокировки экрана используйте

lock.reenableKeyguard();

и для отключения использования блокировки,

lock.disableKeyguard();  

Это просто скроет экран блокировки и отобразит, если произойдет какой-либо входящий вызов или любое подобное событие, он отобразит этот экран. Он не будет отображать экран блокировки.

При запуске приложения, чтобы отключить переход в состояние блокировки, просто используйте для параметра setKeepScreenOn() значение true. или используйте атрибут xml android:keepScreenOn="true"

Другой способ предотвратить переход устройства в спящий режим или режим блокировки во время работы приложения — установить для этого API значение true — setKeepScreenOn().

И, конечно же, нам нужно дать разрешение android.permission.DISABLE_KEYGUARD

person suba    schedule 27.11.2015