web-dev-qa-db-fra.com

USE_FINGERPRINT est obsolète dans l'API de niveau 28

La constante USE_FINGERPRINT Était obsolète dans l'API de niveau 28 et nous devrions utiliser plus générique USE_BIOMETRIC Qui a été ajouté au même niveau d'API.

J'échange ces constantes dans mon manifeste et j'obtiens une erreur en appelant FingerprintManagerCompat.from(context).isHardwareDetected().

L'erreur est:

Autorisation requise manquante - USE_FINGERPRINT

Cela est dû à l'annotation @RequiresPermission("Android.permission.USE_FINGERPRINT") dans FingerprintManagerCompat du support de la v4 lib 28.0.0-rc3.

Est-ce quelque chose que je peux ignorer et continuer à utiliser une nouvelle autorisation?

25
JerabekJakub

J'ai eu le même problème, mais la réponse courte est d'ignorer la dépréciation, à condition que vous seulement souhaitiez prendre en charge l'authentification par empreinte digitale dans votre application.

Comme indiqué dans le google dev blog , puisque l'API 28, Google présente le nouveau API biométrique , qui simplifie l'ensemble du processus d'authentification biométrique. Ils fournissent un constructeur simple pour le dialogue d'authentification. De plus, ils prennent également en charge la détection de visage et d'iris - à mon avis, ce n'est qu'une question de temps si vous souhaitez prendre en charge cette fonctionnalité et méritez probablement une mise à niveau.

Le seul inconvénient que j’ai découvert jusqu’à présent est que si vous voulez vérifier par exemple si Le matériel d'empreinte digitale est disponible, vous devez démarrer le processus d'authentification pour vérifier cela et attendre le rappel de l'erreur . L'API d'empreinte digitale déconseillée fournit à la place des méthodes telles que isHardwareDetected() ou hasEnrolledFingerprints() à cette fin. Dans ce cas, vous devrez probablement reconfigurer votre application si vous vous basez sur ces informations. La raison pour la dépréciation de ces méthodes est probablement due au fait qu’elle ne prend en charge que les empreintes digitales. Par conséquent, ce n’est pas une mauvaise idée de la mettre à niveau.

Google a également fourni le compat'androidx.biometric:biometric:1.0.0-alpha02' version pour les périphériques situés sous l’API 28, il semble qu’en important cette dépendance, vous pouvez simplement passer à USE_BIOMETRIC _ permission sans rien modifier d'autre dans votre application - vous ne serez plus dérangé par l'avertissement. Comme il n’est qu’au stade alpha, je l’utiliserais avec précaution. Par conséquent, tant que vous n'utilisez rien de l'API biométrique, vous pouvez également simplement ignorer le problème et y faire face à nouveau lorsque vous souhaitez prendre en charge des méthodes d'authentification biométrique supplémentaires.

[~ # ~] edit [~ # ~] : La version bêta de la bibliothèque compat est maintenant disponible, 'androidx.biometric:biometric:1.0.0-beta01'. Pour plus d'informations à ce sujet, cochez ici .

74
mathew11

API biométrique fournit BiometricConstants pour la gestion des erreurs

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
    }
}
0
chock2099