Есть ли способ сделать что-то вроде `requestDismissKeyGuard` под уровнем API 25? - PullRequest
0 голосов
/ 20 июня 2020

Я хочу попросить пользователя отключить блокировку клавиатуры. Но 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
                    )
                }
            }

Если есть другой способ, я бы хотелось бы знать.

Спасибо.

1 Ответ

0 голосов
/ 20 июня 2020

Я не пробовал под уровнем API 25, но нашел эти ответы:

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

Отключить и снова включить:

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

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

Поскольку я получил ответ от : Отключение экрана блокировки клавиатуры в Android

...