2

我想禁用屏幕锁定。显示屏幕并在关闭它后,我想再次锁定屏幕,为此我正在使用此代码。

在 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中无效

4

1 回答 1

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);
    }

不推荐使用唤醒锁,现在只应使用窗口标志。

编辑:它仅适用于普通/透明主题,不适用于对话框主题。

于 2014-05-17T15:26:42.790 回答