Je travaille avec l'authentification d'empreintes digitales avec Android 6.0 api. Mon exigence est la suivante: si le périphérique actuel prend en charge l’authentification par empreinte digitale, je passerai par l’authentification par empreinte digitale, sinon la méthode habituelle sera utilisée pour se connecter à l’application.
Ainsi, chacun peut me dire comment vérifier la compatibilité des appareils pour l'authentification d'empreinte digitale dans Android.
Merci d'avance.
Vous devez utiliser la méthode isHardwareDetected
sur la classe FingerprintManager
.
Déterminez si le matériel d'empreinte digitale est présent et fonctionnel. Résultats true si le matériel est présent et fonctionnel, false sinon.
// Check if we're running on Android 6.0 (M) or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//Fingerprint API only available on from Android 6.0 (M)
FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
if (!fingerprintManager.isHardwareDetected()) {
// Device doesn't support fingerprint authentication
} else if (!fingerprintManager.hasEnrolledFingerprints()) {
// User hasn't enrolled any fingerprints to authenticate with
} else {
// Everything is ready for fingerprint authentication
}
}
N'oubliez pas d'ajouter la permission d'accéder aux fonctions d'empreinte digitale dans AndroidManifest . Depuis l'API 28:
<uses-permission Android:name=" Android.permission.USE_BIOMETRIC" />
Avant API28:
<uses-permission Android:name="Android.permission.USE_FINGERPRINT" />
Avec bibliothèque de support
Si vous ne voulez pas vérifier Build.VERSION, il est également possible de vérifier le périphérique inférieur à Android 6.0 avec Support Library
Ajouter une dépendance:
compile "com.Android.support:support-v4:23.0.0"
Et utilisez la classe FingerprintManagerCompat
comme ceci:
FingerprintManagerCompat fingerprintManagerCompat = FingerprintManagerCompat.from(context);
if (!fingerprintManagerCompat.isHardwareDetected()) {
// Device doesn't support fingerprint authentication
} else if (!fingerprintManagerCompat.hasEnrolledFingerprints()) {
// User hasn't enrolled any fingerprints to authenticate with
} else {
// Everything is ready for fingerprint authentication
}
Juste un suivi de la réponse de LaurentY. Vous devez obtenir une autorisation pour accéder au lecteur d’empreintes digitales. Et pour cela, vous devez ajouter ceci à votre manifeste.
API 27 et avant
<uses-permission Android:name="Android.permission.USE_FINGERPRINT" />
API 28 et plus tard
<uses-permission Android:name="Android.permission.USE_BIOMETRIC" />
Cette méthode fonctionne pour toutes les versions d'Android et vérifie également l'autorisation.
private boolean isSensorAvialable() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return ActivityCompat.checkSelfPermission(AppContext, Manifest.permission.USE_FINGERPRINT) == PackageManager.PERMISSION_GRANTED &&
AppContext.getSystemService(FingerprintManager.class).isHardwareDetected();
} else {
return FingerprintManagerCompat.from(AppContext).isHardwareDetected();
}
}
vérifier cet exemple exemple de google