Включение программного обеспечения

Я хотел бы разблокировать экран и включить его, чтобы показать всплывающее окно в триггере события. Я могу разблокировать экран, используя

newKeyguardLock = km.newKeyguardLock(HANDSFREE); newKeyguardLock.disableKeyguard(); 

На KeyGuardService, но я не могу включить экран. я использую

 wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, HANDSFREE); wl.acquire(); 

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

Ответ Амира привлек меня, но вам нужен флаг ACQUIRE_CAUSES_WAKEUP (по сравнению с Android 2.3.3).

 WakeLock screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock( PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); screenLock.acquire(); //later screenLock.release(); 

В своей основной деятельности OnCreate () напишите следующий код:

 ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG").acquire(); 

Это заставляет устройство проснуться.

Не забывайте disableKeyguard (), чтобы разблокировать устройство …

У меня такая же проблема. Поскольку эти ребята обсуждаются здесь , есть скрытый api для включения / выключения экрана, см. https://android.googlesource.com/platform/frameworks/base/+/froyo-release/core/java/android/os/ Power.java

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