Это большой вопрос! Может быть важно дать пошаговый ответ. Во-первых, давайте отделим то, что происходит на конкретном устройстве, от того, что происходит в вашем приложении. Затем мы обратимся к более конкретному вопросу.
Устройство
Устройство, на котором работает API 23+, может иметь или не иметь настройки учетных данных для входа в систему. Владелец устройства не обязан устанавливать PIN-код устройства, графический ключ, пароль или биометрические шаблоны. Это выбор.
Приложение
Пользователь должен иметь возможность установить ваше приложение независимо от того, были ли настроены учетные данные устройства. Поэтому ваше приложение должно быть написано таким образом, чтобы обрабатывать случаи использования, когда учетные данные для входа не были настроены.
Ответьте на ваш более конкретный вопрос
Рекомендуется сдавать от CryptoObject
до authenticate()
, когда внедрение биометрического API. Если вы последуете этой рекомендации, то да, вы проверите canAuthenticate()
, прежде чем звонить authenticate(promptInfo, cryptoObject)
. Для этого есть ряд причин, о которых вы можете узнать, прочитав указанное выше сообщение в блоге.
Поскольку ваш вопрос касается конкретно setDeviceCredentialAllowed(true)
, важно вспомнить, что делает canAuthenticate()
. Он проверяет три вещи: есть ли на устройстве биометрическое оборудование, есть ли у пользователя зарегистрированные шаблоны или активировал ли пользователь биометрическую аутентификацию.
Следовательно, вы не можете использовать canAuthenticate()
в вашем случае, так как он касается исключительно биометрии, тогда как setDeviceCredentialAllowed(true)
принимает PIN-код устройства, шаблон или пароль.
Обратите внимание: хотя рекомендуется использовать CryptoObject
, setDeviceCredentialAllowed()
несовместимо ни с CryptoObject
, ни с setNegativeButtonText()
.
P.S. Вам также может быть полезно прочитать этот блог опубликовать.
person
Isai Damier
schedule
02.01.2020