Ich hatte kürzlich die Gelegenheit, mit der neuen BiometricPrompt API-Funktion zu arbeiten, die von Google dieses Jahr veröffentlicht wurde. Während die Unterstützung der Fingerabdruck-Authentifizierung seit Android 6.0 verfügbar ist, verspricht das neue BiometricPrompt mehr Genauigkeit und ein einheitliches Sicherheitsniveau auf allen Geräten, auf denen unsere Anwendung läuft.
Nachdem ich vor kurzem die biometrische Authentifizierung in einer Android-App implementiert habe, dachte ich, ich würde einige der grundlegenden Schritte hervorheben, die erforderlich sind, um diese Funktion in einer Android-App zu implementieren.
So lasst uns beginnen!
Schritt 2: Prüfen, ob das Gerät die biometrische Authentifizierung unterstützt
Speziell werden wir prüfen, ob die folgenden Bedingungen erfüllt sind:
- Das Gerät läuft mit Android 6.0 oder höher
- Das Gerät verfügt über einen Fingerabdrucksensor
- Der Benutzer hat Ihrer App die Erlaubnis erteilt, auf den Fingerabdrucksensor zuzugreifen.
- Der Benutzer hat mindestens einen Fingerabdruck auf seinem Gerät registriert.
Wir können eine separate util-Klasse erstellen, um zu prüfen, ob die oben genannten Bedingungen erfüllt sind:
Schritt 3: Anzeige des BiometricPrompt-Dialogs
Wenn die oben genannten Bedingungen geprüft sind, können wir prüfen, ob die Android-Version im Gerät Android P ist. Der biometrische Dialog wird nur in Android P unterstützt. Schauen wir uns das zuerst an.
Der folgende Code zeigt einen BiometricPrompt-Dialog an:
Wir können den BiometricPrompt-Builder verwenden:
- setTitle() – Legen Sie den anzuzeigenden Titel fest (erforderlich)
- setSubtitle() – Legen Sie den anzuzeigenden Untertitel fest (optional)
- setDescription() – Legen Sie die anzuzeigende Beschreibung fest (optional)
- setNegativeButton() – Legen Sie den Text für die negative Schaltfläche fest (erforderlich). Sie müssen auch eine Executor-Instanz und einen Click-Listener für die negative Schaltfläche bereitstellen.
Hinweis: Sie können das Symbol oder die Fehlermeldung, die im Dialog verwendet werden, nicht anpassen.
Schritt 4: Authentifizierungs-Callback behandeln
Als Nächstes verwenden wir den BiometricPrompt.AuthenticationCallback, um auf Authentifizierungsereignisse von den Benutzern zu warten. Es umfasst 4 Methoden:
onAuthenticationSucceeded
Wenn der Fingerabdruck erfolgreich mit einem der auf dem Gerät registrierten Fingerabdrücke abgeglichen wurde, wird dieser Callback ausgelöst. Ein AuthenticationResult-Objekt wird an den Callback übergeben.
onAuthenticationFailed
Wenn der Fingerabdruck mit keinem der auf dem Gerät registrierten Fingerabdrücke übereinstimmt, wird dieser Callback ausgelöst.
onAuthenticationError
Wenn ein nicht behebbarer Fehler aufgetreten ist und der Authentifizierungsprozess ohne Erfolg abgeschlossen wurde, wird dieser Callback ausgelöst. Der Callback wird mit einem Fehlercode versehen, um die Ursache des Fehlers zusammen mit der Fehlermeldung zu identifizieren. Die verschiedenen Arten von Fehlercodes, die auftreten können, sind:
- BIOMETRIC_ERROR_LOCKOUT – Der Vorgang wurde abgebrochen, weil die API aufgrund zu vieler Versuche gesperrt ist.
- BIOMETRIC_ERROR_LOCKOUT_PERMANENT – Der Vorgang wurde abgebrochen, weil BIOMETRIC_ERROR_LOCKOUT zu oft aufgetreten ist.
- BIOMETRIC_ERROR_NO_SPACE – Der Vorgang kann nicht abgeschlossen werden, da nicht genügend Speicherplatz vorhanden ist, um den Vorgang abzuschließen.
- BIOMETRIC_ERROR_TIMEOUT – Es ist eine Zeitüberschreitung aufgetreten, da die aktuelle Anforderung zu lange gelaufen ist.
- BIOMETRIC_ERROR_UNABLE_TO_PROCESS – Der Sensor konnte das aktuelle Bild nicht verarbeiten.
- BIOMETRIC_ERROR_USER_CANCELED – Der Benutzer hat den Vorgang abgebrochen.
- BIOMETRIC_ERROR_VENDOR – Wenn es Bedingungen gibt, die nicht unter eine der oben genannten Kategorien fallen.
- BIOMETRIC_ERROR_NO_BIOMETRICS – Der Benutzer hat keine biometrischen Daten im Gerät registriert.
- BIOMETRIC_ERROR_CANCELED – Der Vorgang wurde abgebrochen, weil der biometrische Sensor nicht verfügbar ist.
- BIOMETRIC_ERROR_HW_NOT_PRESENT – Das Gerät verfügt nicht über einen biometrischen Sensor.
- BIOMETRIC_ERROR_HW_UNAVAILABLE – Die Gerätehardware ist nicht verfügbar.
onAuthenticationHelp
Diese Methode wird aufgerufen, wenn während des Authentifizierungsprozesses ein nicht schwerwiegender Fehler aufgetreten ist. Der Rückruf wird mit einem Hilfecode versehen, um die Fehlerursache zu identifizieren, zusammen mit einer Hilfemeldung. Die verschiedenen Arten von Hilfecodes, die auftreten können, sind:
- BIOMETRIC_ACQUIRED_IMAGER_DIRTY – Das biometrische Bild war aufgrund vermuteter Verschmutzung des Sensors zu stark verrauscht.
- BIOMETRIC_ACQUIRED_INSUFFICIENT – Das biometrische Bild war für die Verarbeitung zu stark verrauscht. Dies kann verschiedene Gründe haben, aber im Allgemeinen liegt es daran, dass das Bild nicht lesbar war.
- BIOMETRIC_ACQUIRED_PARTIAL – Es wurde nur ein teilweises biometrisches Bild erkannt.
- BIOMETRIC_ACQUIRED_TOO_FAST – Das biometrische Bild war unvollständig, weil der Benutzer seinen Finger zu schnell um den Sensor bewegt hat.
- BIOMETRIC_ACQUIRED_TOO_SLOW – Das biometrische Bild war nicht lesbar, weil der Benutzer seinen Finger zu langsam um den Sensor bewegt hat.
Wenn Sie ein Android P-Gerät haben, dann ist es das!