KeyguardManager - альтернатива метода requestDismissKeyguard () для API 25 и ниже [Android] - PullRequest
0 голосов
/ 24 мая 2018

Недавно я пытался попросить пользователя вручную убрать защиту ключей из моего приложения.Мое приложение вызывает экран активности, когда устройство заблокировано, и на нем есть флаги

FLAG_SHOW_WHEN_LOCKED
FLAG_TURN_SCREEN_ON

Когда мне нужно вызвать другой экран, на котором нет этих флагов, я хочу запроситьпользователь, чтобы разблокировать защиту клавиатуры, это поведение можно увидеть в приложении камеры - когда мы хотим поделиться фотографией, сделанной, когда телефон заблокирован, он попросит нас разблокировать устройство.

Метод requestDismissKeyguard () работает только для api26 и выше любых альтернатив для нижнего apis ??

1 Ответ

0 голосов
/ 07 ноября 2018

вы можете использовать createConfirmDeviceCredentialIntent на уровне API 21

https://developer.android.com/reference/android/app/KeyguardManager.html#createConfirmDeviceCredentialIntent(java.lang.CharSequence,%20java.lang.CharSequence)

пример:

//region [in some funtion]
if (keyguardManager.isKeyguardLocked()) {
   Intent intent = keyguardManager.createConfirmDeviceCredentialIntent("My Title", "A Custom Description");
   if (intent != null) {
       startActivityForResult(intent, REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS);
   }else{
        Toast.makeText(MainActivity.this, "Secure lock screen hasn't set up", Toast.LENGTH_SHORT).show();
   }
}
//endregion

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS) {
       if (resultCode == RESULT_OK) {
           Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
       } else {
           Toast.makeText(MainActivity.this, "Cancel", Toast.LENGTH_SHORT).show();
       }
    }
}
...