0

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

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 在点击通知后重新启用, 但从不工作!!??任何帮助

4

1 回答 1

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() 吗?

于 2014-12-28T13:05:58.180 回答