Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式打开屏幕_Android_Screen_Locking - Fatal编程技术网

Android 以编程方式打开屏幕

Android 以编程方式打开屏幕,android,screen,locking,Android,Screen,Locking,我想解锁屏幕并打开它,在事件触发器上显示一个弹出窗口。我可以使用解锁屏幕 newKeyguardLock = km.newKeyguardLock(HANDSFREE); newKeyguardLock.disableKeyguard(); 在KeyGuardService上,但我无法打开屏幕。我正在使用 wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, HANDSFREE); wl.acquire(); 但是没有成功。屏幕仍

我想解锁屏幕并打开它,在事件触发器上显示一个弹出窗口。我可以使用解锁屏幕

newKeyguardLock = km.newKeyguardLock(HANDSFREE);
newKeyguardLock.disableKeyguard();
KeyGuardService
上,但我无法打开屏幕。我正在使用

wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, HANDSFREE);
wl.acquire();
但是没有成功。屏幕仍处于关闭状态。
我怎样才能做到这一点呢?

我也有同样的问题。正如这些人所讨论的,有一个隐藏的api可以打开/关闭屏幕,请参见:


但我不知道怎么称呼它。实际上,我看到一个应用程序可以打开屏幕,不知道它是否是特定于设备的。

在主要活动的OnCreate()中,编写以下代码:

((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG").acquire();
它会使设备唤醒


不要忘记禁用keyguard()以解锁设备…

作者的说明:我在2012年写过这篇文章。我不知道它是否还能用。请务必查看其他较新的答案


阿米尔的回答让我很接近,但你至少需要
ACQUIRE\u CAUSES\u WAKEUP
标志(针对Android 2.3.3构建)


未定义的带有空指针检查和设置超时的答案:

private void turnOnScreen() {
    PowerManager.WakeLock screenLock = null;
    if ((getSystemService(POWER_SERVICE)) != null) {
        screenLock = ((PowerManager)getSystemService(POWER_SERVICE)).newWakeLock(
                PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
        screenLock.acquire(10*60*1000L /*10 minutes*/);


        screenLock.release();
    }
}

这是一个非常流行的问题,但现在公认的答案已经过时了

以下是打开屏幕或从活动中唤醒设备屏幕的最新方法:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    this.setTurnScreenOn(true);
} else {
    final Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
API第27级
中,使用但标志\u打开屏幕\u标志已被弃用,因此您可以从
API第27级
开始使用

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    this.setTurnScreenOn(true);
} else {
    final Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}