Legg til fingeravtrykksgodkjenning til appen din ved å bruke BiometricPrompt

Forfatter: Lewis Jackson
Opprettelsesdato: 13 Kan 2021
Oppdater Dato: 1 Juli 2024
Anonim
Legg til fingeravtrykksgodkjenning til appen din ved å bruke BiometricPrompt - Apps
Legg til fingeravtrykksgodkjenning til appen din ved å bruke BiometricPrompt - Apps

Innhold


La oss bruke BiometricPrompt API for å lage en app som lar brukeren bekrefte identiteten sin ved hjelp av et fingeravtrykk.

Åpne Android Studio og lag et nytt prosjekt ved å bruke "Tom Activity" -malen. Når du blir bedt om det, angir du prosjektets minimum SDK til 28 eller høyere, da dette vil forhindre at applikasjonen din blir installert på noe tidligere enn Android Pie.

Hvis du ønsket å gjøre appen din tilgjengelig for et bredere spekter av Android-enheter, må du sjekke hvilken versjon av Android-applikasjonen din for øyeblikket er installert på, og deretter håndtere biometrisk autentisering på en annen måte, avhengig av enhetens API-nivå.

Legg til biometrisk bibliotek

For å starte, åpner du build.gradle-filen på modulnivå og legger til den siste versjonen av Biometric-biblioteket som en prosjektavhengighet:

avhengigheter {implementering androidx.biometric: biometric: 1.0.0-alpha03

Legg til USE_BIOMETRIC-tillatelsen

BiometricPrompt API lar deg benytte deg av alle de forskjellige biometriske autentiseringsmetodene som enheten støtter, via en enkelt tillatelse.


Åpne prosjektets manifest, og legg til "USE_BIOMETRIC" tillatelse:

Lag applikasjonens layout

La oss deretter lage applikasjonens layout. Jeg skal legge til en enkelt knapp som når du trykker på vil starte fingeravtrykkgodkjenningsdialogen:

Åpne prosjektets strings.xml-fil, og legg til "autor" -strengressursen:

BiometricPromptSample Autentiser med fingeravtrykk

Autentisering av brukerens identitet

La oss se på hvordan du autentiserer brukerens identitet ved å bruke BiometricPrompt.


Opprett en biometrisk ledetekstforekomst

BiometricPrompt-klassen inneholder en ledsager Builder () -klasse, som du kan bruke til å opprette en BiometricPrompt-forekomst og starte autentiseringen:

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

Når du bygger din BiometricPrompt-forekomst, må du definere teksten som skal vises i autentiseringsdialogen, og tilpasse "negativ-knappen", som er knappen som lar brukeren kansellere autentiseringen.

For å konfigurere autentiseringsdialogen, må du oppgi følgende:

  • setTitle. Tittelen på fingeravtrykkgodkjenning. (Påkrevd)
  • setSubtitle. Undertittelen til fingeravtrykkgodkjenning. (Valgfri)
  • setDescription. En tilleggsbeskrivelse som vises i autentiseringsdialogen. (Valgfri)
  • setNegativeButton (tekst, utfører, lytter). Dette er etiketten for den negative knappen, for eksempel "Avbryt" eller "Avslutt." Når du konfigurerer den negative knappen, må du også oppgi en Executor-forekomst og en OnClickListener slik at brukeren kan avvise autentiseringsdialogen.

I skrivende stund var det ikke mulig å tilpasse ikonet eller feilen som ble brukt i godkjenningsdialogen.

Til slutt må du ringe build (). Dette gir oss følgende:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Titteltekst går hit") .setSubtitle ("Undertittel går her") .setDescription ("Dette er beskrivelsen") .setNegativeButtonText ("Avbryt") .bygge();

Håndter autentisering tilbakeringinger

BiometricPrompt-forekomsten er tildelt et sett med tilbakeringingsmetoder for autentisering som vil varsle appen din om resultatene av godkjenningsprosessen.

Du må pakke inn alle disse tilbakeringingene i en BiometricPrompt.AuthenticationCallback-klasseinstans:

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

Neste trinn er å implementere noen, eller alle de følgende tilbakeringingsmetodene:

1. onAuthenticationSucceeded ()

Denne metoden kalles når fingeravtrykket er vellykket matchet med et av fingeravtrykkene som er registrert på enheten. I dette scenariet blir et AuthenticationResult-objekt sendt til onAuthenticationSucceeded tilbakeringing, og appen din vil deretter utføre en oppgave som svar på denne vellykkede godkjenningen.

For å hjelpe ting enkelt, svarer appen vår ved å skrive ut en til Android Studio's Logcat:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (resultat); Log.d (TAG, "Fingeravtrykk gjenkjent vellykket"); }

2. onAuthenticationFailed ()

Denne metoden utløses når skanningen er fullført, men fingeravtrykket stemmer ikke overens med noen av utskriftene som er registrert på enheten. Igjen vil appen vår svare på denne autentiseringshendelsen ved å skrive ut en til Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Fingeravtrykk ikke gjenkjent"); }

3. onAuthenticationError

Denne tilbakeringingen utløses når en feil som ikke kan gjenopprettes, og autentiseringen ikke kan fullføres. For eksempel er enhetens berøringssensor dekket av skitt eller fett, brukeren har ikke registrert noen fingeravtrykk på denne enheten, eller det er ikke nok minne tilgjengelig til å utføre en full biometrisk skanning.

Her er koden jeg skal bruke i appen min:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "En uopprettelig feil oppstod"); }}

4. onAuthenticationHelp

OnAuthenticationHelp-metoden kalles når en ikke-dødelig feil oppstår, og inneholder en hjelpekode og en som gir ytterligere informasjon om feilen.

For å hjelpe med å holde koden vår grei bruker jeg ikke onAuthenticationHelp i appen vår, men en implementering vil se slik ut:

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

Til slutt må vi kalle autentiseringsmetoden () for BiometricPrompt-forekomsten:

myBiometricPrompt.authenticate (promptInfo);

Implementering av Android Pies biometriske godkjenning

Når du har fullført alle trinnene ovenfor, bør MainActivity se slik ut:

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 utvider AppCompatActivity {privat statisk final String TAG = MainActivity.class.getName (); @Override beskyttet tomrom onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Lag et tråd basseng med en enkelt tråd // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity-aktivitet = dette; // Begynn å lytte etter autentiseringshendelser // endelig BiometricPrompt myBiometricPrompt = new BiometricPrompt (aktivitet, newExecutor, new BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError kalles når en dødelig feil oppstår // public void onAuthenticationError @ error CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} annet {// Skriv ut til Logcat // Log.d (TAG, "En uopprettelig feil oppstod");}} // onAuthenticationSucceeded kalles når et fingeravtrykk er vellykket matchet // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (resultat); // Skriv ut til Logcat // Log.d (TAG, "Fingerprint gjenkjent vellykket ");} // onAuthenticationFailed blir kalt når fingeravtrykket ikke samsvarer med // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Skriv ut en til logg cat // Log.d (TAG, "Fingeravtrykk ikke gjenkjent"); }}); // Opprett forekomsten BiometricPrompt // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Legg til tekst i dialogboksen // .setTitle ("Tittelteksten går her") .setSubtitle ("Undertekst går hit" ) .setDescription ("Dette er beskrivelsen") .setNegativeButtonText ("Avbryt") // Bygg dialogen // .build (); // Tildel en onClickListener til appens “Autentisering” -knapp // findViewById (R.id.launchAuthentication) .setOnClickListener (ny View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo; }); }}

Testing av prosjektet ditt

Nå har du opprettet prosjektet ditt, det er på tide å prøve det og se om det faktisk legger til fingeravtrykkgodkjenning til appen din!

For å kjøre dette prosjektet, trenger du enten en fysisk smarttelefon eller nettbrett som kjører Android Pie, eller en Android Virtual Device (AVD) som bruker forhåndsvisning av Android P eller nyere.

Du må også registrere minst ett fingeravtrykk på enheten din. Hvis du bruker en fysisk Android-enhet, kan du gjøre følgende:

  • Sikre låseskjermen din med en PIN-kode, passord eller mønster, hvis du ikke allerede har gjort det (ved å navigere til "Innstillinger> Låsskjerm og sikkerhet> Skjermlåstype> Mønster / pin / passord" og deretter følge instruksjonene på skjermen).
  • Start enhetens applikasjonsinnstillinger.
  • Velg "Lås skjerm og sikkerhet."
  • Velg "Fingerprint scanner."
  • Følg instruksjonene for å registrere ett eller flere fingeravtrykk.

Virtuelle Android-enheter har ikke en fysisk berøringssensor, så du må simulere en berøringshendelse:

  • Start AVD-en hvis du ikke allerede har gjort det.
  • Ved siden av AVD ser du en knappestripe. Finn den tre-prikkede “Mer” -knappen (der markøren er plassert i følgende skjermbilde) og gi den et klikk. Dette starter vinduet "Utvidede kontroller".
  • I vinduet Utvidede kontroller velger du "Fingerprint." Dette åpner et sett med kontroller, der du kan etterligne forskjellige berøringshendelser.
  • Åpne rullegardinmenyen, og velg fingeravtrykket du vil registrere på denne enheten; Jeg bruker "Finger 1."
  • La oss nå vende oppmerksomheten mot den emulerte enheten. Start AVDs "Innstillinger" -applikasjon, og velg "Sikkerhet og plassering."
  • Hvis du ikke allerede har konfigurert en PIN-kode, passord eller mønster, velger du "Skjermlås" og følger instruksjonene på skjermen for å sikre låseskjermen, navigerer du tilbake til hovedinnstillingen "Innstillinger> Sikkerhet og plassering".
  • Velg "Fingerprint", etterfulgt av "Add fingerprint."
  • Du vil nå bli bedt om å trykke fingeren til berøringssensoren. I stedet fortsetter å klikke på "Berør sensoren" til du ser et "Fingeravtrykk lagt til".

  • Klikk på "Ferdig."
  • Hvis du vil registrere flere fingeravtrykk, skyll og gjenta trinnene ovenfor.

Når du har registrert minst ett fingeravtrykk, er du klar til å sette søknaden din på prøve. Jeg skal teste hvordan applikasjonen vår håndterer tre forskjellige scenarier:

  • Brukeren prøver å autentisere ved hjelp av et registrert fingeravtrykk.
  • Brukeren prøver å autentisere ved hjelp av et fingeravtrykk som ikke er registrert på denne enheten.
  • Brukeren prøver å autentisere ved bruk av uregistrerte fingeravtrykk, flere ganger og raskt etter hverandre.

La oss prøve å autentisere ved hjelp av fingeravtrykket vi nettopp har registrert på enheten vår:

  • Forsikre deg om at du ser på Android Studios Logcat Monitor, da det er her applikasjonens forskjellige funksjoner vises.

  • Installer applikasjonen din på testenheten.
  • Trykk på applikasjonens “Autentiser med fingeravtrykk” -knappen. Dialogboksen for fingeravtrykkgodkjenning vises.
  • Hvis du bruker en fysisk enhet, trykker du og holder fingeren mot enhetens berøringssensor. Hvis du bruker en AVD, bruker du "Berør sensoren" -knappen for å simulere en berøringshendelse.
  • Sjekk Logcat Monitor. Hvis autentiseringen var en suksess, bør du se følgende: “Fingeravtrykk gjenkjent vellykket”

La oss deretter se hva som skjer hvis vi prøver å autentisere ved hjelp av et fingeravtrykk som ikke er registrert på denne enheten:

  • Trykk på appens "Autentiser med fingeravtrykk" -knappen igjen.
  • Hvis du bruker en AVD, bruker du "Utvidede kontroller" -vinduet for å velge et fingeravtrykk som er ikke registrert på denne enheten; Jeg bruker "Finger 2." Gi "Trykk på sensoren" -knappen et klikk.
  • Hvis du bruker en fysisk Android-smarttelefon eller -brett, trykker du og holder fingeren mot enhetens berøringssensor - sørg for at du bruker en finger som ikke er registrert på denne enheten!
  • Sjekk Android Studio's Logcat, den skal nå vise et "Fingeravtrykk ikke gjenkjent".

Som allerede nevnt, håndterer BiometricPrompt API automatisk overdrevne mislykkede autentiseringsforsøk. Slik tester du denne funksjonaliteten:

  • Trykk på appens "Autentiser med fingeravtrykk" -knappen.
  • Forsøk å autentisere flere ganger i rask rekkefølge ved å bruke et uregistrert fingeravtrykk.
  • Etter noen få forsøk, bør dialogboksen lukkes automatisk. Sjekk Android Studio's Logcat, så ser du følgende: "En uopprettelig feil oppstod."

Du kan laste ned den komplette applikasjonen fra GitHub.

Innpakking

I denne artikkelen utforsket vi Android Pies nye BiometricPrompt API, som lar deg enkelt legge til fingeravtrykkgodkjenning til appen din. Tror du BiometricPrompt er en forbedring av Android sine tidligere fingeravtrykkgodkjenningsmetoder? Gi oss beskjed i kommentarene nedenfor!

I en tid hvor du boktavelig talt ikke trenger å forlate huet ditt for å kjøpe noe, er det ikke rart hvorfor videodørklokker og ikkerhetkameraer har vokt eg til å bli å po...

I fjor måtte Google håndtere en maiv tidlig lekkaje av Google Pixel 3, med flere prototyper om ble olgt på det varte markedet i Europa. I dag har Google imidlertid en annen type lekkaje...

Nye Innlegg