Разблокировать лицо, используя Confirm Credentials api

Я использую подтверждение учетных данных api в своем приложении для аутентификации пользователя, используя createConfirmDeviceCredentialIntent api.

Api работает нормально, когда я установил блокировку своего устройства как pin/pattern/password или fingerprint. Но он не работает в случае разблокировки лица. Я установил разблокировку лица на своем устройстве, и он отлично работает при открытии устройства. Но когда я запускаю намерение с использованием вышеупомянутого api, он не распознает разблокировку лица, а все другие вещи.

Является ли это ограничением этого api? или я должен сделать что-то дополнительное, чтобы достичь этого?

Невозможно найти это в любом месте, поэтому разместите здесь.

Ответ 1

К сожалению, это невозможно, поскольку разблокировка с помощью лица является частью набора инструментов для разблокировки Smart Lock.

Другие способы разблокировки, которые подпадают под категорию Smart Lock, включают в себя:

  • Обнаружение на теле
  • Надежные места
  • Доверенные устройства
  • Доверенное лицо (рассматриваемый метод)
  • Доверенный голос

Поскольку ни один из этих методов не является примитивным средством защиты в Android, нет смысла разрешать доступ к ним с помощью API.

Если бы Smart Lock мог использоваться с Keyguard, обнаружение на теле теоретически могло бы предоставить доступ к приложению, находясь в надежном месте (но не в руках доверенного лица), и даже надежный голос мог бы использоваться.

Apple и Face ID могут разрешить это, потому что Face ID является примитивным методом безопасности для iPhone X, поскольку данные, используемые для разблокировки устройства, хранятся в Secure Enclave, так же, как данные Touch ID.

Надеюсь, это даст вам достаточную причину того, почему это невозможно, и почему имеет смысл, что это невозможно.

Источники: Keyguard (с указанием методов разблокировки, которые можно использовать), Smart Lock, Face ID

Ответ 2

BiometricPrompt представлен в API 28. Он будет поддерживать аутентификацию по отпечаткам пальцев, радужной оболочке и лицу.

Вот пример того, как разработчик может использовать его в своем приложении

enter image description here

java.lang.Object
   ↳    android.hardware.biometrics.BiometricPrompt

enter image description here

Используя конструктор BiometricPrompt, мы можем:

setTitle() - установить заголовок для отображения (обязательно)

setSubtitle() - установить отображение субтитров (необязательно)

setDescription() — Set the description to display(Optional)

setNegativeButton() - установить текст для отрицательной кнопки (обязательно).

Вы также должны предоставить экземпляр Executor и прослушиватель щелчков для отрицательной кнопки.

Примечание. Нельзя настроить значок или сообщение об ошибке, которые используются в диалоговом окне.

implementation 'androidx.biometric:biometric:1.0.0-beta01'

Последний выпуск

Исходный код GitHub доступен здесь NativeBiometricScanner, разработанный в Котлине