Android如何禁用模式锁定

时间:2014-05-17 15:21:37

标签: java android keyguardlock

我想禁用屏幕锁定。显示屏幕,在解除它之后,我想再次锁定屏幕,为此我正在使用此代码。

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

1 个答案:

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

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

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