Føj fingeraftryksgodkendelse til din app ved hjælp af BiometricPrompt

Forfatter: Lewis Jackson
Oprettelsesdato: 13 Kan 2021
Opdateringsdato: 1 Juli 2024
Anonim
Føj fingeraftryksgodkendelse til din app ved hjælp af BiometricPrompt - Apps
Føj fingeraftryksgodkendelse til din app ved hjælp af BiometricPrompt - Apps

Indhold


Lad os bruge BiometricPrompt API til at oprette en app, der giver brugeren mulighed for at bekræfte deres identitet ved hjælp af et fingeraftryk.

Åbn Android Studio og opret et nyt projekt ved hjælp af skabelonen "Tom aktivitet". Når du bliver bedt om det, skal du indstille dit projekts minimum SDK til 28 eller højere, da dette forhindrer, at din applikation installeres på noget tidligere end Android Pie.

Hvis du ønskede at gøre din app tilgængelig for et større udvalg af Android-enheder, skal du kontrollere, hvilken version af Android din applikation er installeret på, og derefter håndtere biometrisk godkendelse forskelligt afhængigt af enhedens API-niveau.

Tilføj det biometriske bibliotek

For at starte skal du åbne din build.gradle-fil på modulniveau og tilføje den nyeste version af Biometric-biblioteket som en projektafhængighed:


afhængigheder {implementering androidx.biometric: biometric: 1.0.0-alpha03

Tilføj USE_BIOMETRIC tilladelse

BiometricPrompt API giver dig mulighed for at benytte dig af alle de forskellige biometriske godkendelsesmetoder, som enheden understøtter, via en enkelt tilladelse.

Åbn dit projekts manifest, og tilføj tilladelsen "USE_BIOMETRIC":

Opret din applikations layout

Lad os derefter oprette vores applikations layout. Jeg vil tilføje en enkelt knap, der, når der er tappet, vil starte fingeraftryksgodkendelsesdialogen:

Åbn dit projekts strings.xml-fil, og tilføj "autor" -strengressourcen:


BiometricPromptSample Godkend med fingeraftryk

Autentificering af brugerens identitet

Lad os nu se, hvordan du autentificerer brugerens identitet ved hjælp af BiometricPrompt.

Opret en biometrisk promptforekomst

Klassen BiometricPrompt inkluderer en ledsagende Builder () -klasse, som du kan bruge til at oprette en BiometricPrompt-forekomst og starte godkendelsen:

endelig BiometricPrompt.PromptInfo promptInfo = ny BiometricPrompt.PromptInfo.Builder ()

Når du bygger din BiometricPrompt-forekomst, skal du definere teksten, der skal vises i godkendelsesdialogen, og tilpasse den "negative knap", som er den knap, der giver brugeren mulighed for at annullere godkendelsen.

Hvis du vil konfigurere godkendelsesdialogen, skal du angive følgende:

  • setTitle. Titlen på fingeraftryksgodkendelsesprompt. (Påkrævet)
  • setSubtitle. Underteksten til fingeraftryksgodkendelsesprompt. (Valgfri)
  • setDescription. En yderligere beskrivelse, der vises i din godkendelsesdialog. (Valgfri)
  • setNegativeButton (tekst, eksekutor, lytter). Dette er den negative knap etiket, for eksempel "Annuller" eller "Afslut." Når du konfigurerer den negative knap, skal du også angive en Executor-instans og en OnClickListener, så brugeren kan afvise godkendelsesdialogen.

På dette tidspunkt var det ikke muligt at tilpasse ikonet eller den fejl, der blev brugt i godkendelsesdialogen.

Endelig skal du kalde build (). Dette giver os følgende:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Titeltekst går her") .setSubtitle ("Undertekst går her") .setDescription ("Dette er beskrivelsen") .setNegativeButtonText ("Annuller") .build ();

Håndter autentificering tilbagekald

BiometricPrompt-instansen er tildelt et sæt autentificeringsopkaldsmetoder, der informerer din app om resultaterne af godkendelsesprocessen.

Du skal pakke alle disse tilbagekald i en BiometricPrompt.AuthenticationCallback-klasseeksempel:

endelig BiometricPrompt myBiometricPrompt = new BiometricPrompt (aktivitet, newExecutor, ny BiometricPrompt.AuthenticationCallback () {

Det næste trin er implementering af nogle eller alle følgende tilbagekaldsmetoder:

1. onAuthenticationSucceeded ()

Denne metode kaldes, når fingeraftrykket matches med en af ​​de fingeraftryk, der er registreret på enheden. I dette scenario overføres et AuthenticationResult-objekt til onAuthenticationSucceeded tilbagekald, og din app udfører derefter en opgave som svar på denne vellykkede godkendelse.

For at hjælpe med at holde tingene enkle svarer vores app ved at udskrive en til Android Studios Logcat:

@Override offentligt ugyldigt onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (resultat); Log.d (TAG, "Fingeraftryk genkendt med succes"); }

2. onAuthenticationFailed ()

Denne metode udløses, når scanningen er afsluttet, men fingeraftrykket stemmer ikke overens med nogen af ​​de udskrifter, der er registreret på enheden. Igen reagerer vores app på denne godkendelsesbegivenhed ved at udskrive en til Logcat:

@Override offentligt ugyldigt onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Fingeraftryk ikke genkendt"); }

3. onAuthenticationError

Denne tilbagekald udløses, når der opstår en ikke-genvindbar fejl, og godkendelsen kan ikke udføres korrekt. For eksempel er enhedens berøringssensor dækket af snavs eller fedt, brugeren har ikke registreret nogen fingeraftryk på denne enhed, eller der er ikke nok hukommelse til rådighed til at udføre en fuld biometrisk scanning.

Her er koden, jeg bruger i min app:

@Override offentligt ugyldigt onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} andet {Log.d (TAG, "En uoprettelig fejl opstod"); }}

4. onAuthenticationHelp

OnAuthenticationHelp-metoden kaldes, når der opstår en ikke-dødelig fejl, og inkluderer en hjælpekode og en, der giver yderligere oplysninger om fejlen.

For at hjælpe med at holde vores kode ligetil bruger jeg ikke onAuthenticationHelp i vores app, men en implementering ser sådan ud:

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

Endelig er vi nødt til at kalde autentificeringsmetoden () i BiometricPrompt-forekomsten:

myBiometricPrompt.authenticate (promptInfo);

Implementering af Android Pies biometriske godkendelse

Når du har gennemført alle ovenstående trin, skal din MainActivity se sådan ud:

import androidx.appcompat.app.AppCompatActivity; import androidx.biometric.BiometricPrompt; import android.os.Bundle; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import androidx.fragment.app.FragmentActivity; import android.util.Log; import android.view.View; import androidx.annotation.NonNull; offentlig klasse MainActivity udvider AppCompatActivity {privat statisk final String TAG = MainActivity.class.getName (); @Override beskyttet tomrum onCreate (Bundle gemtInstanceState) {super.onCreate (gemtInstanceState); setContentView (R.layout.activity_main); // Opret en trådpool med en enkelt tråd // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity-aktivitet = dette; // Begynd at lytte til godkendelsesbegivenheder // endelig BiometricPrompt myBiometricPrompt = new BiometricPrompt (aktivitet, newExecutor, ny BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError kaldes, når der indtræder en dødelig fejl // public void onAuthenticationError int errorCon CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} andet {// Udskriv en til Logcat // Log.d (TAG, "En uoprettelig fejl opstod");}} // onAuthenticationSucceeded kaldes, når et fingeraftryk matches med succes // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (resultat); // Print a to Logcat // Log.d (TAG, "Fingerprint genkendt med succes ");} // onAuthenticationFailed kaldes, når fingeraftrykket ikke matcher // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Print a to Log cat // Log.d (TAG, "Fingeraftryk ikke genkendt"); }}); // Opret forekomsten BiometricPrompt // endelig BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Føj tekst til dialogen // .setTitle ("Titeltekst går her") .setSubtitle ("Undertekst går her" ) .setDescription ("Dette er beskrivelsen") .setNegativeButtonText ("Annuller") // Opret dialogen // .build (); // Tildel en onClickListener til appens “Autentificering” -knap // findViewById (R.id.launchAuthentication) .setOnClickListener (ny View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo; }); }}

Test dit projekt

Nu har du oprettet dit projekt, det er tid til at sætte det på prøve og se, om det faktisk tilføjer fingeraftryksgodkendelse til din app!

For at køre dette projekt har du brug for enten en fysisk smartphone eller tablet, der kører Android Pie, eller en Android Virtual Device (AVD), der bruger forhåndsvisning af Android P eller nyere.

Du skal også registrere mindst et fingeraftryk på din enhed. Hvis du bruger en fysisk Android-enhed, skal du:

  • Sikre din låseskærm med en PIN-kode, adgangskode eller mønster, hvis du ikke allerede har gjort det (ved at navigere til “Indstillinger> Låseskærm og sikkerhed> Skærmlåsetype> Mønster / pin / adgangskode” og derefter følge instruktionerne på skærmen).
  • Start din enheds applikationer "Indstillinger".
  • Vælg "Lås skærm og sikkerhed."
  • Vælg "Fingerprint scanner."
  • Følg instruktionerne for at registrere en eller flere fingeraftryk.

Android-virtuelle enheder har ikke en fysisk berøringssensor, så du skal simulere en berøringshændelse:

  • Start din AVD, hvis du ikke allerede har gjort det.
  • Ved siden af ​​AVD ser du et stykke knapper. Find den tre-punkterede “Mere” -knap (hvor markøren er placeret i følgende skærmbillede) og giv den et klik. Dette åbner vinduet "Udvidede kontroller".
  • I vinduet Udvidede kontroller skal du vælge "Fingerprint." Dette åbner et sæt kontroller, hvor du kan efterligne forskellige berøringshændelser.
  • Åbn rullemenuen, og vælg det fingeraftryk, du vil registrere på denne enhed; Jeg bruger "Finger 1."
  • Lad os nu skifte opmærksomhed mod den emulerede enhed. Start AVD's "Indstillinger" -program, og vælg "Sikkerhed & placering."
  • Hvis du ikke allerede har opsat en PIN-kode, adgangskode eller mønster, skal du vælge "Skærmlås" og følge instruktionerne på skærmen for at sikre din låseskærm og derefter navigere tilbage til hovedskærmen "Indstillinger> Sikkerhed & placering".
  • Vælg "Fingerprint" efterfulgt af "Add fingerprint."
  • Du bliver nu bedt om at trykke fingeren mod berøringssensoren. I stedet skal du fortsætte med at klikke på "Tryk på sensoren", indtil du ser et "Fingeraftryk tilføjet".

  • Klik på "Udført."
  • Hvis du vil registrere yderligere fingeraftryk, skal du skylle og gentage ovenstående trin.

Når du har registreret mindst et fingeraftryk, er du klar til at sætte din ansøgning på prøve. Jeg vil teste, hvordan vores applikation håndterer tre forskellige scenarier:

  • Brugeren forsøger at autentificere ved hjælp af et registreret fingeraftryk.
  • Brugeren forsøger at autentificere ved hjælp af et fingeraftryk, der ikke er registreret på denne enhed.
  • Brugeren forsøger at autentificere ved hjælp af uregistrerede fingeraftryk flere gange og hurtigt efter hinanden.

Lad os prøve at autentificere ved hjælp af det fingeraftryk, vi netop har registreret på vores enhed:

  • Sørg for, at du ser Android Studios Logcat Monitor, da det er her din applikations forskellige vises.

  • Installer din applikation på testenheden.
  • Tryk på din applikations knap "Autentificer med fingeraftryk". Dialogboksen til fingeraftryksgodkendelse vises.
  • Hvis du bruger en fysisk enhed, skal du trykke og holde fingerspidsen mod enhedens berøringssensor. Hvis du bruger en AVD, skal du bruge knappen "Tryk på sensoren" til at simulere en berøringshændelse.
  • Kontroller Logcat Monitor. Hvis godkendelsen var en succes, skal du se følgende: "Fingeraftryk genkendt med succes"

Lad os derefter se, hvad der sker, hvis vi forsøger at autentificere ved hjælp af et fingeraftryk, der ikke er registreret på denne enhed:

  • Tryk på appens knap "Autentificer med fingeraftryk" igen.
  • Hvis du bruger en AVD, skal du bruge vinduet "Udvidede kontroller" til at vælge et fingeraftryk der er ikke registreret på denne enhed; Jeg bruger "Finger 2." Giv knappen "Tryk på sensoren" et klik.
  • Hvis du bruger en fysisk Android-smartphone eller tablet, skal du trykke og holde fingerspidsen mod enhedens berøringssensor - sørg for, at du bruger en finger, der ikke er registreret på denne enhed!
  • Kontroller Android Studio's Logcat, det skal nu vise et "Fingeraftryk ikke genkendt".

Som allerede nævnt håndterer BiometricPrompt API automatisk overdreven mislykkede godkendelsesforsøg. Sådan tester du denne funktionalitet:

  • Tryk på din apps knap "Autentificer med fingeraftryk".
  • Forsøg at autentificere flere gange i hurtig rækkefølge ved hjælp af et uregistreret fingeraftryk.
  • Efter nogle få forsøg skal dialogboksen lukkes automatisk. Kontroller Android Studio's Logcat, og du skal se følgende: "Der opstod en ikke-genvindbar fejl."

Du kan downloade det komplette program fra GitHub.

Afslutter

I denne artikel udforskede vi Android Pies nye BiometricPrompt API, som du let kan tilføje fingeraftryksgodkendelse til din app. Tror du, at BiometricPrompt er en forbedring af Android's tidligere fingeraftryksgodkendelsesmetoder? Fortæl os det i kommentarerne herunder!

Bare i idte uge rapporterede vi, at ono omider rullede Google Aitant ud til in linje af marte højttalere. Men ono-højttalere allerede indeholdt Amazon Alexa-temmeaitent, bør det at lade...

Boe oundWear Companion Wirele Wearable Højttaler løer et unikt problem: du vil lytte til muik, men du vil ikke have hovedtelefoner. Du ønker heller ikke, at muikken prænge fra din ...

Sørg For At Læse