【问题标题】:Disabled Keyguard Lock re-enables itself after clicking on a notification(android)单击通知后禁用的键盘锁会重新启用(android)
【发布时间】:2014-12-28 11:57:50
【问题描述】:

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

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 但从不工作!!??? 任何帮助

【问题讨论】:

  • 您使用的是哪个 API 级别?
  • 此代码适用于某些设备,而其他不适用 [注 4]
  • android:minSdkVersion="11" android:targetSdkVersion="21" />
  • prb 在点击任何通知时通过所有移动设备重新启用它

标签: android keyguard


【解决方案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()?

【讨论】:

  • 确定。我知道这已被弃用..但是如何禁用键盘保护,我尝试使用标志 wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED); wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON); ..但不起作用
  • 你能详细告诉我们你想达到什么目标吗?我的意思是目标是什么?
  • 1-禁用可以与任何设备一起使用的键盘保护方式? ..我的应用程序将在特定时间禁用键盘保护并打开活动..此操作适用于某些设备,而其他设备在单击任何通知键盘保护重新启用时禁用 keyduard 后 2 秒无法正常工作..任何建议??
  • 感谢您的大力帮助.. 1- 我将此代码放在 onResume 方法中,但仍未禁用键盘保护 2- 秒问题.. 是的,我在我的应用程序中调用了完成
猜你喜欢
  • 2012-10-14
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
相关资源
最近更新 更多