Adăugați autentificarea amprentei digitale în aplicație, utilizând BiometricPrompt

Autor: Lewis Jackson
Data Creației: 13 Mai 2021
Data Actualizării: 1 Iulie 2024
Anonim
Adăugați autentificarea amprentei digitale în aplicație, utilizând BiometricPrompt - Aplicaţii
Adăugați autentificarea amprentei digitale în aplicație, utilizând BiometricPrompt - Aplicaţii

Conţinut


Să folosim API-ul BiometricPrompt pentru a crea o aplicație care să permită utilizatorului să își confirme identitatea folosind o amprentă.

Deschide Android Studio și creează un nou proiect, folosind șablonul „Activitate goală”. Când vi se solicită, setați SDK-ul minim al proiectului la 28 sau mai mare, deoarece acest lucru va împiedica instalarea aplicației pe ceva mai devreme decât Android Pie.

Dacă ați dorit să vă faceți aplicația accesibilă pentru o gamă mai largă de dispozitive Android, atunci va trebui să verificați ce versiune de Android este instalată în prezent aplicația dvs., și apoi să gestionați diferit autentificarea biometrică, în funcție de nivelul API al dispozitivului.

Adăugați biblioteca Biometrică

Pentru a începe, deschideți fișierul build.gradle la nivel de modul și adăugați cea mai recentă versiune a bibliotecii Biometric ca dependență de proiect:

dependențe {implementare androidx.biometric: biometric: 1.0.0-alpha03

Adăugați permisiunea USE_BIOMETRIC

API BiometricPrompt vă permite să atingeți toate diferitele metode de autentificare biometrică pe care dispozitivul le acceptă, printr-o singură permisiune.


Deschide Manifestul proiectului și adaugă permisiunea „USE_BIOMETRIC”:

Creați aspectul aplicației dvs.

În continuare, creăm aspectul aplicației noastre. Voi adăuga un singur buton care, la atingere, va lansa dialogul de autentificare a amprentelor digitale:

Deschideți fișierul strings.xml al proiectului și adăugați resursa șirului „auth”:

BiometricPromptSample Autentificați-vă cu amprentă

Autentificarea identității utilizatorului

Acum, să ne uităm la modul în care ați autentificat identitatea utilizatorului, folosind BiometricPrompt.


Creați o instanță prompt biometrică

Clasa BiometricPrompt include o clasă Builder () însoțitoare, pe care o puteți utiliza pentru a crea o instanță BiometricPrompt și pentru a iniția autentificarea:

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

Când construiți instanța dvs. BiometricPrompt, va trebui să definiți textul care ar trebui să apară în dialogul de autentificare și să personalizați „butonul negativ”, care este butonul care permite utilizatorului să anuleze autentificarea.

Pentru a configura dialogul de autentificare, va trebui să furnizați următoarele:

  • SetTitle. Titlul promptului de autentificare a amprentelor digitale. (Necesar)
  • setSubtitle. Subtitrarea promptului de autentificare a amprentelor. (Opțional)
  • setDescription. O descriere suplimentară care va fi afișată în dialogul de autentificare. (Opțional)
  • setNegativeButton (text, executor, ascultător). Aceasta este eticheta butonului negativ, de exemplu „Anulare” sau „Ieșire”. Când configurați butonul negativ, va trebui să furnizați și o instanță Executor și un OnClickListener, astfel încât utilizatorul să poată respinge dialogul de autentificare.

În momentul scrierii, nu a fost posibil să personalizați pictograma sau eroarea folosită în dialogul de autentificare.

În cele din urmă, va trebui să apelați build (). Aceasta ne oferă următoarele:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Textul merge aici") .setSubtitle ("Subtitlul merge aici") .setDescription ("Aceasta este descrierea") .setNegativeButtonText ("Anulează"). .construi();

Gestionați apelurile de autentificare

Instanței BiometricPrompt i se atribuie un set de metode de apelare de autentificare care vor notifica aplicația dvs. despre rezultatele procesului de autentificare.

Va trebui să înfășurați toate aceste apeluri de apel într-o biometricPrompt.AuthenticationCallback instanță de clasă:

final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activitate, newExecutor, new BiometricPrompt.AuthenticationCallback () {

Următorul pas este implementarea unora sau a tuturor metodelor de apelare următoare:

1. onAuthenticationSuceded ()

Această metodă se numește atunci când amprenta digitală este potrivită cu una dintre amprentele înregistrate pe dispozitiv. În acest scenariu, un obiect AuthenticationResult este transmis apelului onAuthenticationSucceeded, iar aplicația dvs. va efectua apoi o sarcină ca răspuns la această autentificare de succes.

Pentru a vă menține lucrurile simple, aplicația noastră va răspunde prin imprimarea unui Logcat în Android Studio:

@ Supraversa public public onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (rezultat); Log.d (TAG, „Amprenta digitală recunoscută cu succes”); }

2. onAuthenticationFailed ()

Această metodă este declanșată atunci când scanarea este finalizată cu succes, dar amprenta digitală nu se potrivește cu niciuna dintre imprimările înregistrate pe dispozitiv. Din nou, aplicația noastră va răspunde la acest eveniment de autentificare, prin imprimarea unui în Logcat:

@ Supraversează public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, „Amprenta digitală necunoscută”); }

3. onAuthenticationError

Această apelare este declanșată ori de câte ori apare o eroare care nu poate fi recuperată și autentificarea nu poate fi finalizată cu succes. De exemplu, probabil că senzorul tactil al dispozitivului este acoperit de murdărie sau grăsime, utilizatorul nu a înregistrat nicio amprentă pe acest dispozitiv sau nu există suficientă memorie disponibilă pentru a efectua o scanare biometrică completă.

Iată codul pe care îl voi folosi în aplicația mea:

@ Supraversează public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "A apărut o eroare care nu se poate recupera"); }}

4. onAuthenticationHelp

Metoda onAuthenticationHelp este numită ori de câte ori apare o eroare non-fatală și include un cod de ajutor și o care furnizează informații suplimentare despre eroare.

Pentru a contribui la păstrarea codului nostru simplu, nu voi folosi onAuthenticationHelp în aplicația noastră, dar o implementare ar arăta astfel:

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

În cele din urmă, trebuie să apelăm la metoda autentificare () a instanței BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Implementarea autentificării biometrice a Android Pie

După ce ai finalizat toți pașii de mai sus, Activitatea principală ar trebui să arate așa:

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; public class MainActivity extinde AppCompatActivity {private static final String TAG = MainActivity.class.getName (); @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (salvatInstanceState); setContentView (R.layout.activity_main); // Creați un grup de thread cu un singur thread // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity activitate = aceasta; // Începeți să ascultați evenimentele de autentificare // final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activitate, newExecutor, nou BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError este apelat atunci când apare o eroare fatală // public void onAuthenticationError (intro eroare CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Print a to Logcat // Log.d (TAG, "A apărut o eroare irecuperabilă");}} // onAuthenticationSucceeded este apelat atunci când o amprentă este potrivită cu succes // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult rezultat) {super.onAuthenticationSucceeded (rezultat); // Print a to Logcat // Log.d (TAG, "Amprentă digitală" recunoscut cu succes ");} // onAuthenticationFailed se numește când amprenta digitală nu se potrivește // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Print a to Log cat // Log.d (TAG, „Amprentă digitală necunoscută”); }}); // Creați instanța BiometricPrompt // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Adăugați text la dialog // .setTitle ("Titlul text merge aici") .setSubtitle ("Subtitlul merge aici") ) .setDescription ("Aceasta este descrierea") .setNegativeButtonText ("Cancel") // Construiți dialogul // .build (); // Alocați un onClickListener butonului „Autentificare” al aplicației // findViewById (R.id.launchAuthentication) .setOnClickListener (nou View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.aut) }); }}

Testarea proiectului tău

Acum v-ați creat proiectul, este timpul să-l puneți la încercare și să vedeți dacă adaugă de fapt autentificarea amprentei digitale în aplicație!

Pentru a derula acest proiect, veți avea nevoie fie de un smartphone sau tabletă care rulează Android Pie, fie de un dispozitiv virtual Android (AVD) care utilizează previzualizarea Android P sau o versiune ulterioară.

De asemenea, va trebui să înregistrați cel puțin o amprentă digitală pe dispozitiv. Dacă utilizați un dispozitiv Android fizic, atunci:

  • Asigurați-vă ecranul de blocare cu un PIN, o parolă sau un model, dacă nu ați făcut-o deja (accesând „Setări> Blocare ecran și securitate> Tip blocare ecran> Model / Pin / Parolă” și apoi urmând instrucțiunile de pe ecran).
  • Lansați aplicația „Setări” a dispozitivului.
  • Selectați „Blocare ecran și securitate”.
  • Selectați „Scanner de amprente digitale.”
  • Urmați instrucțiunile pentru a înregistra una sau mai multe amprente.

Dispozitivele virtuale Android nu au senzor de atingere fizică, astfel încât va trebui să simulați un eveniment tactil:

  • Lansați AVD, dacă nu ați făcut-o deja.
  • Alături de AVD, veți vedea o fâșie de butoane. Găsiți butonul „Mai mult” cu trei puncte (unde este poziționat cursorul în imaginea următoare) și dați-i un clic. Aceasta lansează fereastra „Control extins”.
  • În fereastra Controluri extinse, selectați „Amprentă.” Aceasta deschide un set de controale, unde puteți emula diverse evenimente tactile.
  • Deschideți meniul derulant și alegeți amprenta pe care doriți să o înregistrați pe acest dispozitiv; Folosesc „Degetul 1.”
  • Acum, să ne îndreptăm atenția asupra dispozitivului emulat. Lansați aplicația „Setări” AVD și selectați „Securitate și locație”.
  • Dacă nu ați configurat deja un PIN, o parolă sau un model, apoi selectați „Blocarea ecranului” și urmați instrucțiunile de pe ecran pentru a vă asigura ecranul de blocare, apoi navigați înapoi la ecranul principal „Setări> Securitate și locație”.
  • Selectați „Amprentă digitală”, urmată de „Adăugare amprentă”.
  • Acum vi se va solicita să apăsați degetul către senzorul tactil. În schimb, continuați să faceți clic pe „Atingeți senzorul” până când vedeți o „Amprentă digitală adăugată”.

  • Faceți clic pe „Terminat”.
  • Dacă doriți să înregistrați amprente suplimentare, clătiți și repetați pașii de mai sus.

După ce ați înregistrat cel puțin o amprentă, sunteți gata să vă supuneți aplicației. Voi testa cum aplicația noastră gestionează trei scenarii diferite:

  • Utilizatorul încearcă să se autentifice folosind o amprentă înregistrată.
  • Utilizatorul încearcă să se autentifice folosind o amprentă care nu este înregistrată pe acest dispozitiv.
  • Utilizatorul încearcă să se autentifice folosind amprente neînregistrate, de mai multe ori și în succesiune rapidă.

Încercăm să autentificăm folosind amprenta pe care tocmai am înregistrat-o pe dispozitivul nostru:

  • Asigurați-vă că vizualizați Logcat Monitorul Android Studio, deoarece aici vor apărea diferitele aplicații ale aplicației dvs.

  • Instalați aplicația pe dispozitivul de testare.
  • Atingeți butonul „Autentificați cu amprentă”. Va apărea dialogul de autentificare a amprentelor.
  • Dacă utilizați un dispozitiv fizic, atunci apăsați și mențineți apăsat vârful degetului de senzorul tactil al dispozitivului. Dacă utilizați un AVD, atunci utilizați butonul „Atingeți senzorul” pentru a simula un eveniment tactil.
  • Verificați monitorul Logcat. Dacă autentificarea a fost un succes, atunci ar trebui să vedeți următoarele: „Amprentele digitale recunoscute cu succes”

În continuare, să vedem ce se întâmplă dacă încercăm să autentificăm folosind o amprentă care nu este înregistrată pe acest dispozitiv:

  • Atingeți din nou butonul „Autentificare cu amprentă”.
  • Dacă utilizați un AVD, atunci utilizați fereastra „Control extins” pentru a selecta o amprentă nu este înregistrat pe acest dispozitiv; Folosesc „Degetul 2.” Dați clic pe butonul „Atingeți senzorul”.
  • Dacă utilizați un smartphone sau o tabletă Android fizică, apoi apăsați și țineți vârful degetului pe senzorul tactil al dispozitivului - asigurați-vă că utilizați un deget care nu este înregistrat pe acest dispozitiv!
  • Verificați Logcatul de la Android Studio, acesta ar trebui să afișeze acum o „Amprentă digitală necunoscută”.

După cum am menționat deja, API-ul BiometricPrompt gestionează automat încercări excesive de autentificare eșuată. Pentru a testa această funcționalitate:

  • Atingeți butonul „Autentificați-vă cu amprentă digitală”.
  • Încercați să autentificați de mai multe ori în succesiune rapidă, folosind o amprentă neînregistrată.
  • După câteva încercări, caseta de dialog ar trebui să se închidă automat. Verificați Logcatul lui Android Studio și ar trebui să vedeți următoarele: „A apărut o eroare care nu poate fi recuperată.”

Puteți descărca aplicația completă de pe GitHub.

Înveliți

În acest articol, am explorat noua API BiometricPrompt a Android Pie, care vă permite să adăugați cu ușurință autentificarea amprentelor digitale în aplicație. Credeți că BiometricPrompt este o îmbunătățire a metodelor anterioare de autentificare a amprentelor digitale pe Android? Spuneți-ne în comentariile de mai jos!

Atăzi, Comiia Federală pentru Comerț a anunțat că Google a fot de acord ă plăteacă o amendă de 170 de milioane de dolari pentru a oluționa unele acuzații grave împotriva YouTube. FTC uține că You...

YouTube a anunțat atăzi planurile de a elimina mii de videoclipuri și canale care pledează pentru neo-nazim, upremația albă și alte puncte de vedere extreme....

Publicații Interesante