Ik kreeg onlangs de kans om te werken met de nieuwe BiometricPrompt API-functie die dit jaar door Google is vrijgegeven. Hoewel ondersteuning voor vingerafdrukauthenticatie al beschikbaar is sinds Android 6.0, belooft de nieuwe BiometricPrompt meer nauwkeurigheid en een consistent beveiligingsniveau voor alle apparaten waarop onze applicatie wordt uitgevoerd.
Nadat ik onlangs biometrische authenticatie in een Android-app heb geïmplementeerd, dacht ik dat ik enkele basisstappen zou belichten die nodig zijn om deze functie in een Android-app te implementeren.
Dus laten we beginnen!
Stap 2: Controleer of het apparaat biometrische authenticatie ondersteunt
Specifiek gaan we controleren of aan de volgende voorwaarden wordt voldaan:
- Het apparaat draait op Android 6.0 of hoger
- Het toestel heeft een vingerafdruksensor
- De gebruiker heeft uw app toestemming gegeven voor toegang tot de vingerafdruksensor.
- De gebruiker heeft ten minste één vingerafdruk op zijn apparaat geregistreerd.
We kunnen een aparte util-klasse maken om te controleren of aan de bovenstaande voorwaarden is voldaan:
Stap 3: BiometricPrompt-dialoogvenster
Als de bovenstaande voorwaarden zijn gecontroleerd, kunnen we controleren of de Android-versie in het apparaat Android P is. Het Biometrisch dialoogvenster wordt alleen ondersteund in Android P. Laten we daar eerst eens naar kijken.
Onderstaande code is om een biometrischePrompt-dialoog weer te geven:
Met behulp van de BiometricPrompt-bouwer kunnen we:
- setTitle() – De weer te geven titel instellen (Verplicht)
- setSubtitle() – De weer te geven ondertitel instellen (Optioneel)
- setDescription() – De weer te geven beschrijving instellen(Optioneel)
- setNegativeButton() – De tekst voor de negatieve knop instellen(Verplicht). U moet ook een Executor-instantie en een klik-luisteraar voor de negatieve knop opgeven.
Note: U kunt het pictogram of de foutmelding die in het dialoogvenster worden gebruikt, niet aanpassen.
Stap 4: Authenticatie Callback afhandelen
Volgende gebruiken we de BiometricPrompt.AuthenticationCallback om te luisteren naar authenticatiegebeurtenissen van de gebruikers. Deze bevat 4 methoden:
onAuthenticationSucceeded
Wanneer de vingerafdruk met succes is gematcht met een van de vingerafdrukken die op het apparaat zijn geregistreerd, dan wordt deze callback geactiveerd. Een AuthenticationResult object wordt doorgegeven aan de callback.
onAuthenticationFailed
Wanneer de vingerafdruk niet overeenkomt met een van de vingerafdrukken die op het toestel zijn geregistreerd, dan wordt deze callback geactiveerd.
onAuthenticationError
Wanneer een onherstelbare fout is opgetreden en het authenticatieproces is zonder succes voltooid, dan wordt deze callback geactiveerd. De callback wordt voorzien van een foutcode om de oorzaak van de fout te identificeren, samen met de foutmelding. De verschillende soorten foutcodes die kunnen optreden zijn:
- BIOMETRIC_ERROR_LOCKOUT – De operatie werd geannuleerd omdat de API is vergrendeld als gevolg van te veel pogingen.
- BIOMETRIC_ERROR_LOCKOUT_PERMANENT – De operatie werd geannuleerd omdat BIOMETRIC_ERROR_LOCKOUT te vaak voorkwam.
- BIOMETRIC_ERROR_NO_SPACE – De bewerking kan niet worden voltooid omdat er niet genoeg opslagruimte over is om de bewerking te voltooien.
- BIOMETRIC_ERROR_TIMEOUT – Er is een time-out opgetreden omdat de huidige aanvraag te lang heeft geduurd.
- BIOMETRIC_ERROR_UNABLE_TO_PROCESS – De sensor was niet in staat het huidige beeld te verwerken.
- BIOMETRIC_ERROR_USER_CANCELED – De gebruiker heeft de bewerking geannuleerd.
- BIOMETRIC_ERROR_VENDOR – Als er omstandigheden zijn die niet onder een van de bovenstaande categorieën vallen.
- BIOMETRIC_ERROR_NO_BIOMETRICS – De gebruiker heeft geen biometrische gegevens geregistreerd in het apparaat.
- BIOMETRIC_ERROR_CANCELED – De bewerking werd geannuleerd omdat de biometrische sensor niet beschikbaar is.
- BIOMETRIC_ERROR_HW_NOT_PRESENT – Het apparaat heeft geen biometrische sensor.
- BIOMETRIC_ERROR_HW_UNAVAILABLE – De hardware van het apparaat is niet beschikbaar.
onAuthenticationHelp
Deze methode wordt aangeroepen wanneer tijdens het authenticatieproces een niet-fatale fout is opgetreden. De callback wordt voorzien van een helpcode om de oorzaak van de fout te identificeren, samen met een helpbericht. De verschillende soorten hulpcodes die kunnen voorkomen zijn:
- BIOMETRIC_ACQUIRED_IMAGER_DIRTY – Het biometrische beeld was te ruisig door vermoedelijk vuil op de sensor.
- BIOMETRIC_ACQUIRED_INSUFFICIENT – Het biometrische beeld was te ruisig om te verwerken. Dit kan verschillende oorzaken hebben, maar over het algemeen komt dit doordat het beeld niet leesbaar was.
- BIOMETRIC_ACQUIRED_PARTIAL – Er is slechts een gedeeltelijk biometrisch beeld gedetecteerd.
- BIOMETRIC_ACQUIRED_TOO_FAST – Het biometrische beeld was onvolledig omdat de gebruiker zijn vinger te snel rond de sensor bewoog.
- BIOMETRIC_ACQUIRED_TOO_SLOW – Het biometrische beeld was onleesbaar omdat de gebruiker te weinig rond de sensor bewoog.
Als u een Android P-toestel hebt, dan is dat het!