USE_FINGERPRINT устарел на уровне API 28

Константа USE_FINGERPRINT была устарела на уровне API 28, и мы должны использовать более универсальный USE_BIOMETRIC, который был добавлен на том же уровне API.

Я обмениваю эти константы в своем манифесте и получаю сообщение об ошибке при вызове FingerprintManagerCompat.from(context).isHardwareDetected().

Ошибка:

Missing required permission - USE_FINGERPRINT

Это происходит из-за аннотации @RequiresPermission("android.permission.USE_FINGERPRINT") в FingerprintManagerCompat в 28.0.0-rc3, поддержка v4 lib.

Это то, что я могу игнорировать и продолжать использовать новое разрешение?

Ответ 1

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

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

Единственный недостаток, который я обнаружил, заключается в том, что если вы хотите проверить, например, Аппаратные средства идентификации отпечатков пальцев доступны, вам нужно запустить процесс аутентификации, чтобы проверить это и дождаться обратного вызова с ошибкой. Вместо этого устаревший API отпечатков пальцев предоставляет для этой цели такие методы, как isHardwareDetected() или hasEnrolledFingerprints(). В этом случае вам, вероятно, придется изменить дизайн приложения, если вы полагаетесь на эту информацию. Причина того, что эти методы устарели, вероятно, заключается в том, что они поддерживают только отпечатки пальцев, поэтому его обновление не является плохой идеей.

Google также предоставил совместимую версию 'androidx.biometric:biometric:1.0.0-alpha02' для устройств ниже API 28. Похоже, что, импортируя эту зависимость, вы можете просто переключиться на разрешение USE_BIOMETRIC, не изменяя ничего в своем приложении - вас не будет беспокоить предупреждение больше Так как это только на стадии альфа, я бы использовал это с осторожностью. Поэтому, если вы ничего не используете из API биометрии, вы также можете просто проигнорировать проблему и снова столкнуться с ней, если хотите поддерживать дополнительные методы биометрической аутентификации.

РЕДАКТИРОВАТЬ: Теперь выпущена бета-версия библиотеки Compat, 'androidx.biometric:biometric:1.0.0-beta01'. Для получения дополнительной информации об этом, проверьте здесь.

Ответ 2

API-интерфейс biometrics предоставляет биометрические константы для обработки ошибок

override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
    super.onAuthenticationError(errorCode, errString)

    //The device does not have a biometric sensor.
    if (errorCode == BiometricPrompt.ERROR_HW_NOT_PRESENT){
      //Do something
    }
}

Ответ 3

Приложения должны запрашивать вместо USE_BIOMETRIC