0

I want to request dismiss keyguard to user. But KeyguardManager.requestDismissKeyguard() can only use over api level 26. If device is locked with pin code security, FLAG_DISMISS_KEYGUARD isn't working like 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
                    )
                }
            }

If there is another way, I would like to know.

Thank you.

yukitaka13
  • 121
  • 1
  • 6

1 Answers1

0

I haven't tried under API level 25, but I found these answers,

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

Disable and re-enable it:

public void unlockPhone() {
    keyguard.disableKeyguard();
}

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

As I got the answer from: Dismissing Keyguard Screen in Android

sophin
  • 583
  • 5
  • 11