2016-10-26 7 views
2

Я хочу проснуться и разблокировать устройство. Затем я хотел бы показать активность, когда у пользователя появилось новое сообщение от Firebase.Пробуждение устройства программно

Я написал это на onResume() метод:

window = this.getWindow(); 
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

Это работает для устройств с API> 19. Проблема в том, что в KitKat, он либо ничего не делает, или он просыпается экран, но не разблокировать устройство.

Также я установил правильные права в AndroidManifest.xml:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> 

Также в MyFirebaseMessagingService.class, я начинаю деятельность с FLAG_ACTIVITY_NEW_TASK как флагом.

Кто-нибудь знает, что мне не хватает?

Спасибо за помощь.

+0

проверить эту ссылку для разблокировки устройства с помощью кода [ссылка] (http://stackoverflow.com/questions/14352648/how-to-lock-unlock-screen- программно) –

ответ

1

ОК, я нашел его. Я просто добавить этот код и он работал

KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE); 
KeyguardManager.KeyguardLock lock = manager.newKeyguardLock("abc"); 
lock.disableKeyguard();