我想向用户请求关闭键盘锁。但是KeyguardManager.requestDismissKeyguard()只能在api级别26以上使用。
如果设备已通过密码安全性锁定,则FLAG_DISMISS_KEYGUARD不能像requestDismissKeyguard()那样工作。

when {
                // Android 8.0以上
                Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1 -> {
                    setShowWhenLocked(true)
                    setTurnScreenOn(true)
                    val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
                    keyguardManager.requestDismissKeyguard(this, null)
                }
                Build.VERSION.SDK_INT >= Build.VERSION_CODES.O -> {
                    window.addFlags(
                        FLAG_TURN_SCREEN_ON or FLAG_SHOW_WHEN_LOCKED
                    )
                    val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
                    keyguardManager.requestDismissKeyguard(this, null)
                }
                else -> {
                    window.addFlags(
                        FLAG_TURN_SCREEN_ON or FLAG_SHOW_WHEN_LOCKED or FLAG_DISMISS_KEYGUARD
                    )
                }
            }


如果有其他方法,我想知道。

谢谢。

最佳答案

我没有在API 25级下尝试过,但是我找到了这些答案,

KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
keyguard = km.newKeyguardLock("MyApp");

禁用并重新启用它:
public void unlockPhone() {
    keyguard.disableKeyguard();
}

public void lockPhone() {
    keyguard.reenableKeyguard();
}

当我得到以下答案时:
Dismissing Keyguard Screen in Android

07-24 09:16