我想禁用屏幕锁定。显示屏幕,在解除它之后,我想再次锁定屏幕,为此我正在使用此代码。
在onCreate()之后
PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "INFO");
KeyguardManager km = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
kl = km .newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();
在解雇我正在使用的屏幕时,kl.reenableKeyguard()再次锁定屏幕。
如果我使用滑动屏幕锁定,这非常有效,但如果我使用模式锁定,则此代码无效。我知道这是可能的,有应用程序这样做,但到目前为止,我无法找到出路。
编辑:我发现此代码在nexus中有效,但在galaxy中无效
答案 0 :(得分:3)
您可以创建一个活动,以便在需要时启动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
不推荐使用唤醒锁,现在只能使用窗口标志。
编辑:它仅适用于普通/透明主题,不适用于对话框主题。