单击通知后,已禁用Keyguard Lock重新启用(android)

时间:2014-12-28 11:57:50

标签: android keyguard

这个问题到目前为止还没有答案??? 在我的应用程序中,我使用下面的代码禁用了键盘锁(即,删除锁屏),它可以正常工作,直到我点击通知栏中的任何通知。如果我点击通知,则会自动重新启用锁定屏幕。任何帮助表示赞赏。

private void remove_lockscreen() {
    final CheckBoxPreference lock = (CheckBoxPreference) findPreference("remove_lockscreen");
    KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
    KeyguardLock kl = km.newKeyguardLock("keyguard_lock");
    if (lock.isChecked()) {
        prefEdit("remove_lockscreen", 1);
        Toast.makeText(getBaseContext(), "Lockscreen will not be shown", Toast.LENGTH_SHORT).show();
        kl.disableKeyguard();
    }
    else if (!lock.isChecked()) {
        prefEdit("remove_lockscreen", 0);
        Toast.makeText(getBaseContext(), "Lockscreen will be shown", Toast.LENGTH_SHORT).show();
        kl.reenableKeyguard();
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}

我使用了这段代码 Disabled Keyguard Lock re-enables itself after clicking on a notification 但从来没有工作!! ?? 任何帮助

1 个答案:

答案 0 :(得分:1)

KeyguardLock API已从Android API级别13弃用:http://developer.android.com/reference/android/app/KeyguardManager.KeyguardLock.html

您正在Note 4设备上尝试此操作,该设备的Android API级别大于13.因此,它现在可以正常工作。

试一下第1期:

this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
this.getWindow().setType(WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
this.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

问题2:点击通知后重新启用锁定 - 这是因为点击通知时会启动新应用并将您的应用发送到后台。因此,它失去了对其禁用的锁定的控制,并且系统重新启用了锁定。你在你的应用程序中调用finish()吗?