Voeg vingerafdrukverificatie toe aan uw app met behulp van BiometricPrompt

Schrijver: Lewis Jackson
Datum Van Creatie: 13 Kunnen 2021
Updatedatum: 1 Kunnen 2024
Anonim
Biometric Authentication / Fingerprint Scanner (Android Studio Tutorial)
Video: Biometric Authentication / Fingerprint Scanner (Android Studio Tutorial)

Inhoud


Laten we de BiometricPrompt API gebruiken om een ​​app te maken waarmee de gebruiker zijn identiteit kan bevestigen met een vingerafdruk.

Open Android Studio en maak een nieuw project met behulp van de sjabloon 'Lege activiteit'. Stel desgevraagd de minimale SDK van uw project in op 28 of hoger, omdat hierdoor wordt voorkomen dat uw toepassing op iets anders dan Android Pie wordt geïnstalleerd.

Als u uw app toegankelijk wilt maken voor een groter aantal Android-apparaten, moet u controleren op welke versie van Android uw applicatie momenteel is geïnstalleerd en vervolgens biometrische authenticatie anders verwerken, afhankelijk van het API-niveau van het apparaat.

Voeg de biometrische bibliotheek toe

Open om te beginnen uw build.gradle-bestand op moduleniveau en voeg de nieuwste versie van de Biometrische bibliotheek toe als projectafhankelijkheid:

afhankelijkheden {implementatie androidx.biometrisch: biometrisch: 1.0.0-alpha03

Voeg de USE_BIOMETRIC-machtiging toe

Met de BiometricPrompt API kunt u met één enkele machtiging gebruikmaken van alle verschillende biometrische authenticatiemethoden die het apparaat ondersteunt.


Open het manifest van uw project en voeg de machtiging "USE_BIOMETRIC" toe:

Maak de lay-out van uw applicatie

Laten we vervolgens de lay-out van onze applicatie maken. Ik ga een enkele knop toevoegen die, wanneer erop wordt getikt, het dialoogvenster voor vingerafdrukverificatie start:

Open het bestand strings.xml van uw project en voeg de tekenreeksbron 'auth' toe:

BiometricPromptSample Verifiëren met vingerafdruk

De identiteit van de gebruiker verifiëren

Laten we nu eens kijken hoe u de identiteit van de gebruiker authenticeert met behulp van BiometricPrompt.


Maak een biometrische promptinstantie

De klasse BiometricPrompt bevat een klasse Companion Builder (), die u kunt gebruiken om een ​​instantie BiometricPrompt te maken en de authenticatie te initiëren:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder ()

Wanneer u uw BiometricPrompt-instantie bouwt, moet u de tekst definiëren die moet worden weergegeven in het verificatiedialoogvenster en de "negatieve knop" aanpassen, de knop waarmee de gebruiker de verificatie kan annuleren.

Om het authenticatiedialoogvenster te configureren, moet u het volgende opgeven:

  • setTitle. De titel van de vingerafdrukverificatieprompt. (Verplicht)
  • setSubtitle. De ondertitel van de prompt voor vingerafdrukverificatie. (Optioneel)
  • Setbeschrijving. Een extra beschrijving die wordt weergegeven in uw authenticatiedialoogvenster. (Optioneel)
  • setNegativeButton (tekst, uitvoerder, luisteraar). Dit is het label van de negatieve knop, bijvoorbeeld 'Annuleren' of 'Afsluiten'. Wanneer u de negatieve knop configureert, moet u ook een uitvoerende instantie en een OnClickListener opgeven zodat de gebruiker het verificatiedialoogvenster kan sluiten.

Op het moment van schrijven was het niet mogelijk om het pictogram of de fout aan te passen die in het authenticatiedialoogvenster is gebruikt.

Ten slotte moet u build () aanroepen. Dit geeft ons het volgende:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Titel komt hier") .setSubtitle ("Ondertitel komt hier") .setDescription ("Dit is de beschrijving") .setNegativeButtonText ("Annuleren") .bouwen();

Verwerk de authenticatie-callbacks

Aan de BiometricPrompt-instantie is een set verificatiemethoden toegewezen waarmee uw app op de hoogte wordt gesteld van de resultaten van het verificatieproces.

U moet al deze callbacks in een BiometricPrompt.AuthenticationCallback-klasse-instantie verpakken:

final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activiteit, nieuweExecutor, nieuwe BiometricPrompt.AuthenticationCallback () {

De volgende stap is het implementeren van enkele of alle van de volgende callback-methoden:

1. onAuthenticationSucceeded ()

Deze methode wordt genoemd wanneer de vingerafdruk met succes is gekoppeld aan een van de vingerafdrukken die op het apparaat zijn geregistreerd. In dit scenario wordt een AuthenticationResult-object doorgegeven aan de call onAuthenticationSucceeded en voert uw app vervolgens een taak uit als reactie op deze succesvolle authenticatie.

Om de zaken eenvoudig te houden, reageert onze app door een af ​​te drukken op Logcat van Android Studio:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (resultaat); Log.d (TAG, "Vingerafdruk succesvol herkend"); }

2. onAuthenticationFailed ()

Deze methode wordt geactiveerd wanneer de scan is voltooid, maar de vingerafdruk komt niet overeen met de afdrukken die op het apparaat zijn geregistreerd. Nogmaals, onze app reageert op deze authenticatie-gebeurtenis door een naar Logcat af te drukken:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Vingerafdruk niet herkend"); }

3. onAuthenticationError

Dit terugbellen wordt geactiveerd wanneer er een onherstelbare fout optreedt en de authenticatie niet met succes kan worden voltooid. Misschien is de aanraaksensor van het apparaat bedekt met vuil of vet, heeft de gebruiker geen vingerafdrukken op dit apparaat geregistreerd of is er onvoldoende geheugen beschikbaar om een ​​volledige biometrische scan uit te voeren.

Hier is de code die ik in mijn app ga gebruiken:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} anders {Log.d (TAG, "Er is een onherstelbare fout opgetreden"); }}

4. onAuthenticationHelp

De methode onAuthenticationHelp wordt aangeroepen wanneer er een niet-fatale fout optreedt en bevat een helpcode en een code die meer informatie over de fout biedt.

Om onze code eenvoudig te houden, gebruik ik onAuthenticationHelp niet in onze app, maar een implementatie ziet er ongeveer zo uit:

@Override public void onAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString); biometricCallback.onAuthenticationHelp (helpCode, helpString); }

Ten slotte moeten we de methode authenticate () van de instantie BiometricPrompt aanroepen:

myBiometricPrompt.authenticate (promptInfo);

De biometrische authenticatie van Android Pie implementeren

Nadat u alle bovenstaande stappen heeft voltooid, zou uw MainActivity er ongeveer zo uit moeten zien:

androidx.appcompat.app.AppCompatActivity importeren; androidx.biometric importeren.BiometricPrompt; android.os.bundle importeren; java.util.concurrent.Executor importeren; java.util.concurrent.Executors importeren; androidx.fragment.app.FragmentActivity importeren; android.util.Log importeren; android.view.View importeren; androidx.annotation.NonNull importeren; openbare klasse MainActivity breidt AppCompatActivity {private statische finale String TAG = MainActivity.class.getName (); @Override beschermde nietig onCreate (bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); // Maak een thread pool met een enkele thread // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity-activiteit = deze; // Begin te luisteren naar authenticatiegebeurtenissen // final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activiteit, nieuweExecutor, nieuwe BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError wordt opgeroepen wanneer een fatale fout optreedt // public void onAuthenticationError (int errorCode, @Nononullull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} anders {// Print a naar Logcat // Log.d (TAG, "Er is een onherstelbare fout opgetreden");}} // onAuthenticationSucceeded wordt opgeroepen wanneer een vingerafdruk met succes wordt gekoppeld // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (resultaat); // Print een naar Logcat // Log.d (TAG, "Fingerprint met succes herkend ");} // onAuthenticationFailed wordt aangeroepen wanneer de vingerafdruk niet overeenkomt // //Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Print een naar logboek cat // Log.d (TAG, "Vingerafdruk niet herkend"); }}); // Maak de BiometricPrompt-instantie // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Voeg wat tekst toe aan het dialoogvenster // .setTitle ("Titel komt hier") .setSubtitle ("Ondertitel komt hier" ) .setDescription ("Dit is de beschrijving") .setNegativeButtonText ("Annuleren") // Bouw het dialoogvenster // .build (); // Wijs een onClickListener toe aan de knop 'Authentication' van de app // findViewById (R.id.launchAuthentication) .setOnClickListener (nieuwe View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo);} }); }}

Uw project testen

Nu u uw project hebt gemaakt, is het tijd om het op de proef te stellen en te kijken of het daadwerkelijk vingerafdrukverificatie aan uw app toevoegt!

Om dit project uit te voeren, hebt u een fysieke smartphone of tablet met Android Pie nodig, of een virtueel Android-apparaat (AVD) dat het Android P-voorbeeld of hoger gebruikt.

U moet ook ten minste één vingerafdruk op uw apparaat registreren. Als u een fysiek Android-apparaat gebruikt, dan:

  • Beveilig uw vergrendelscherm met een pincode, wachtwoord of patroon, als u dat nog niet heeft gedaan (door te navigeren naar "Instellingen> Vergrendelscherm en beveiliging> Type schermvergrendeling> Patroon / Pin / Wachtwoord" en vervolgens de instructies op het scherm te volgen).
  • Start de app "Instellingen" van uw apparaat.
  • Selecteer "Vergrendelscherm en beveiliging."
  • Selecteer "Vingerafdrukscanner."
  • Volg de instructies om een ​​of meer vingerafdrukken te registreren.

Virtuele Android-apparaten hebben geen fysieke aanraaksensor, dus u moet een aanraakgebeurtenis simuleren:

  • Start uw AVD als u dat nog niet hebt gedaan.
  • Naast de AVD ziet u een strook knoppen. Zoek de knop met de drie punten "Meer" (waar de cursor in de volgende schermafbeelding staat) en klik erop. Hiermee wordt het venster "Uitgebreide bedieningselementen" geopend.
  • Selecteer "Vingerafdruk" in het venster Uitgebreide bedieningselementen. Hiermee opent u een set bedieningselementen waarmee u verschillende aanraakgebeurtenissen kunt emuleren.
  • Open het vervolgkeuzemenu en kies de vingerafdruk die u op dit apparaat wilt registreren; Ik gebruik "Vinger 1."
  • Laten we nu onze aandacht richten op het geëmuleerde apparaat. Start de applicatie "Instellingen" van de AVD en selecteer "Beveiliging en locatie".
  • Als u nog geen pincode, wachtwoord of patroon hebt ingesteld, selecteert u "Schermvergrendeling" en volgt u de instructies op het scherm om uw vergrendelscherm te beveiligen. Ga vervolgens terug naar het hoofdscherm "Instellingen> Beveiliging en locatie".
  • Selecteer "Vingerafdruk", gevolgd door "Vingerafdruk toevoegen".
  • U wordt nu gevraagd om uw vinger op de aanraaksensor te drukken. Blijf in plaats daarvan op "Raak de sensor" klikken totdat u een "Vingerafdruk toegevoegd" ziet.

  • Klik op 'Gereed'.
  • Als u extra vingerafdrukken wilt registreren, spoel dan en herhaal de bovenstaande stappen.

Nadat u ten minste één vingerafdruk heeft geregistreerd, bent u klaar om uw aanvraag op de proef te stellen. Ik ga testen hoe onze applicatie drie verschillende scenario's hanteert:

  • De gebruiker probeert zich te verifiëren met een geregistreerde vingerafdruk.
  • De gebruiker probeert te verifiëren met een vingerafdruk die niet op dit apparaat is geregistreerd.
  • De gebruiker probeert te authenticeren met behulp van niet-geregistreerde vingerafdrukken, meerdere keren en snel achter elkaar.

Laten we proberen ons te verifiëren met de vingerafdruk die we zojuist op ons apparaat hebben geregistreerd:

  • Zorg ervoor dat u de Logcat-monitor van Android Studio bekijkt, want hier verschijnen de verschillende programma's van uw applicatie.

  • Installeer uw applicatie op het testapparaat.
  • Tik op de knop 'Verifiëren met vingerafdruk' van uw app. Het dialoogvenster voor vingerafdrukverificatie verschijnt.
  • Als u een fysiek apparaat gebruikt, houdt u uw vingertop tegen de aanraaksensor van het apparaat. Als u een AVD gebruikt, gebruikt u de knop 'Aanraken van de sensor' om een ​​aanraakgebeurtenis te simuleren.
  • Controleer de Logcat-monitor. Als de authenticatie is geslaagd, ziet u het volgende: "Vingerafdruk met succes herkend"

Laten we nu eens kijken wat er gebeurt als we proberen te verifiëren met een vingerafdruk die niet op dit apparaat is geregistreerd:

  • Tik nogmaals op de knop 'Verifiëren met vingerafdruk' van de app.
  • Als u een AVD gebruikt, gebruikt u het venster "Uitgebreide bedieningselementen" om een ​​vingerafdruk te selecteren is niet geregistreerd op dit apparaat; Ik gebruik "Vinger 2." Geef de knop "Raak de sensor aan" een klik.
  • Als u een fysieke Android-smartphone of -tablet gebruikt, houd dan uw vingertop tegen de aanraaksensor van het apparaat - zorg ervoor dat u een vinger gebruikt die niet op dit apparaat is geregistreerd!
  • Controleer de Logcat van Android Studio, deze zou nu een "Vingerafdruk niet herkend" moeten weergeven.

Zoals reeds vermeld, verwerkt de BiometricPrompt API automatisch buitensporige mislukte authenticatiepogingen. Om deze functionaliteit te testen:

  • Tik op de knop 'Verifiëren met vingerafdruk' van uw app.
  • Probeer meerdere keren snel achter elkaar te authenticeren met een niet-geregistreerde vingerafdruk.
  • Na een paar pogingen zou het dialoogvenster automatisch moeten sluiten. Controleer Logcat van Android Studio en u zou het volgende moeten zien: "Er is een onherstelbare fout opgetreden."

Je kunt de volledige applicatie downloaden van GitHub.

Afsluiten

In dit artikel hebben we de nieuwe BiometricPrompt API van Android Pie verkend, waarmee je eenvoudig vingerafdrukverificatie aan je app kunt toevoegen. Denk je dat BiometricPrompt een verbetering is ten opzichte van eerdere vingerafdrukverificatiemethoden van Android? Laat het ons weten in de reacties hieronder!

Giteren heeft Amazon een initiatief gelanceerd waarin hardware wordt bepleit om Alexa, Cortana en verchillende andere virtuele aitenten tegelijkertijd te onderteunen. Het wordt het Voice Interoperabil...

Ad blocker zijn niet nieuw. Ze betaan ​​al vele jaren al webbrower-extenie en een paar Android-app doen het zelf in het hele beturingyteem. Er i echter een intereant raadel. De Play tore biedt webbrow...

Wij Adviseren