Dodaj uwierzytelnianie odcisków palców do swojej aplikacji za pomocą BiometricPrompt

Autor: Lewis Jackson
Data Utworzenia: 13 Móc 2021
Data Aktualizacji: 1 Lipiec 2024
Anonim
Dodaj uwierzytelnianie odcisków palców do swojej aplikacji za pomocą BiometricPrompt - Aplikacje
Dodaj uwierzytelnianie odcisków palców do swojej aplikacji za pomocą BiometricPrompt - Aplikacje

Zawartość


Użyjmy interfejsu API BiometricPrompt, aby utworzyć aplikację, która pozwoli użytkownikowi potwierdzić swoją tożsamość za pomocą odcisku palca.

Otwórz Android Studio i utwórz nowy projekt, korzystając z szablonu „Pusta aktywność”. Po wyświetleniu monitu ustaw minimalny zestaw SDK projektu na 28 lub wyższy, ponieważ uniemożliwi to zainstalowanie aplikacji na urządzeniach wcześniejszych niż Android Pie.

Jeśli chcesz, aby Twoja aplikacja była dostępna dla szerszej gamy urządzeń z Androidem, musisz sprawdzić wersję Androida, na której aplikacja jest obecnie zainstalowana, a następnie obsługiwać uwierzytelnianie biometryczne inaczej, w zależności od poziomu interfejsu API urządzenia.

Dodaj bibliotekę biometryczną

Aby rozpocząć, otwórz plik build.gradle na poziomie modułu i dodaj najnowszą wersję biblioteki biometrycznej jako zależność projektu:

zależności {wdrożenie androidx.biometric: biometric: 1.0.0-alpha03

Dodaj uprawnienie USE_BIOMETRIC

Interfejs API BiometricPrompt umożliwia korzystanie ze wszystkich różnych metod uwierzytelniania biometrycznego obsługiwanych przez urządzenie za pomocą jednego uprawnienia.


Otwórz Manifest projektu i dodaj uprawnienie „USE_BIOMETRIC”:

Utwórz układ aplikacji

Następnie utwórz układ naszej aplikacji. Dodam jeden przycisk, który po dotknięciu uruchomi okno dialogowe uwierzytelniania odcisków palców:

Otwórz plik strings.xml swojego projektu i dodaj zasób „auth”:

BiometricPromptSample Uwierzytelnij za pomocą odcisku palca

Uwierzytelnianie tożsamości użytkownika

Teraz przyjrzyjmy się, jak uwierzytelnić tożsamość użytkownika za pomocą BiometricPrompt.


Utwórz biometryczną instancję zachęty

Klasa BiometricPrompt zawiera klasę Companion Builder (), której można użyć do utworzenia instancji BiometricPrompt i zainicjowania uwierzytelnienia:

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

Tworząc instancję BiometricPrompt, musisz zdefiniować tekst, który powinien pojawić się w oknie dialogowym uwierzytelniania, i dostosować „przycisk ujemny”, który pozwala użytkownikowi anulować uwierzytelnianie.

Aby skonfigurować okno dialogowe uwierzytelniania, musisz podać następujące informacje:

  • setTitle. Tytuł monitu o uwierzytelnienie odcisków palców. (Wymagany)
  • setSubtitle. Podtytuł monitu o uwierzytelnienie odcisków palców. (Opcjonalny)
  • setDescription. Dodatkowy opis, który będzie wyświetlany w oknie dialogowym uwierzytelniania. (Opcjonalny)
  • setNegativeButton (tekst, executor, detektor). Jest to etykieta przycisku ujemnego, na przykład „Anuluj” lub „Wyjdź”. Podczas konfigurowania przycisku ujemnego musisz także podać instancję Executora i OnClickListener, aby użytkownik mógł zamknąć okno dialogowe uwierzytelniania.

W chwili pisania tego tekstu nie można było dostosować ikony ani błędu używanego w oknie dialogowym uwierzytelniania.

Na koniec musisz wywołać build (). To daje nam następujące rzeczy:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle („Tekst tytułu idzie tutaj”) .setSubtitle („Tu jest napisy”) .setDescription („To jest opis”) .setNegativeButtonText („Anuluj”) .budować();

Obsługa wywołań zwrotnych uwierzytelniania

Instancji BiometricPrompt przypisany jest zestaw metod zwrotnych uwierzytelniania, które powiadomią Twoją aplikację o wynikach procesu uwierzytelniania.

Musisz zawinąć wszystkie te wywołania zwrotne w instancję klasy BiometricPrompt.AuthenticationCallback:

final BiometricPrompt myBiometricPrompt = new BiometricPrompt (aktywność, newExecutor, nowy BiometricPrompt.AuthenticationCallback () {

Następnym krokiem jest wdrożenie niektórych lub wszystkich następujących metod wywołania zwrotnego:

1. onAuthenticationSucceeded ()

Ta metoda jest wywoływana, gdy odcisk palca zostanie pomyślnie dopasowany do jednego z odcisków palców zarejestrowanych w urządzeniu. W tym scenariuszu obiekt AuthenticationResult jest przekazywany do wywołania zwrotnego onAuthenticationSucceeded, a aplikacja wykona zadanie w odpowiedzi na udane uwierzytelnienie.

Aby uprościć sprawę, nasza aplikacja zareaguje, drukując na Logcat w Android Studio:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult wynik) {super.onAuthenticationSucceeded (wynik); Log.d (TAG, „Pomyślnie rozpoznano odcisk palca”); }

2. onAuthenticationFailed ()

Ta metoda jest uruchamiana po pomyślnym zakończeniu skanowania, ale odcisk palca nie pasuje do żadnego z wydruków zarejestrowanych w urządzeniu. Ponownie nasza aplikacja zareaguje na to zdarzenie uwierzytelnienia, drukując w Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, „Nie rozpoznano odcisku palca”); }

3. onAuthenticationError

To wywołanie zwrotne jest wyzwalane za każdym razem, gdy wystąpi nieodwracalny błąd i nie można pomyślnie zakończyć uwierzytelnienia. Na przykład być może czujnik dotykowy urządzenia jest zabrudzony lub zatłuszczony, użytkownik nie zarejestrował żadnych odcisków palców na tym urządzeniu lub nie ma wystarczającej ilości pamięci, aby wykonać pełne skanowanie biometryczne.

Oto kod, którego będę używać w mojej aplikacji:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, „Wystąpił nieodwracalny błąd”); }}

4. onAuthenticationHelp

Metoda onAuthenticationHelp jest wywoływana za każdym razem, gdy wystąpi niekrytyczny błąd, i zawiera kod pomocy oraz kod dostarczający dodatkowych informacji o błędzie.

Aby nasz kod był prosty, nie będę używać onAuthenticationHelp w naszej aplikacji, ale implementacja wyglądałaby mniej więcej tak:

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

Na koniec musimy wywołać metodę uwierzytelnienia () instancji BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Wdrażanie uwierzytelniania biometrycznego Android Pie

Po wykonaniu wszystkich powyższych kroków Twoja MainActivity powinna wyglądać mniej więcej tak:

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; klasa publiczna MainActivity rozszerza AppCompatActivity {private static final String TAG = MainActivity.class.getName (); @Override chronione void onCreate (pakiet saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); // Utwórz pulę wątków z jednym wątkiem // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity activity = this; // Rozpocznij nasłuchiwanie zdarzeń uwierzytelniania // końcowy BiometricPrompt myBiometricPrompt = new BiometricPrompt (aktywność, newExecutor, nowy BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError jest wywoływany, gdy wystąpi błąd krytyczny // public void onAuthenticationError CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Wydrukuj na Logcat // Log.d (TAG, „Wystąpił błąd nie do naprawienia”);}} // onAuthenticationSucceeded jest wywoływany, gdy odcisk palca zostanie pomyślnie dopasowany // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult wynik) {super.onAuthenticationSucceeded (wynik); // Wydrukuj do Logcat // Log.d (TAG, "odcisk palca rozpoznano pomyślnie ");} // onAuthenticationFailed jest wywoływany, gdy odcisk palca nie pasuje // //Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Wydrukuj do dziennika cat // Log.d (TAG, „Rozpoznano odcisk palca”); }}); // Utwórz instancję BiometricPrompt // końcowy BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Dodaj tekst do okna dialogowego // .setTitle („Tekst tytułu idzie tutaj”) .setSubtitle („Podtytuł idzie tutaj” ) .setDescription („To jest opis”) .setNegativeButtonText („Cancel”) // Zbuduj okno dialogowe // .build (); // Przypisz onClickListener do przycisku „Uwierzytelnianie” aplikacji // findViewById (R.id.launchAuthentication) .setOnClickListener (nowy View.OnClickListener () {@Override public void onClick (Wyświetl v) {myBiometricPrompt.authenticate (promptInfo);} }); }}

Testowanie twojego projektu

Po utworzeniu projektu nadszedł czas, aby go przetestować i sprawdzić, czy rzeczywiście dodaje uwierzytelnianie odcisków palców do Twojej aplikacji!

Aby uruchomić ten projekt, potrzebujesz fizycznego smartfona lub tabletu z Androidem Pie lub Android Virtual Device (AVD) korzystającego z podglądu Androida P lub nowszego.

Musisz także zarejestrować co najmniej jeden odcisk palca na swoim urządzeniu. Jeśli używasz fizycznego urządzenia z Androidem, to:

  • Zabezpiecz swój ekran blokady kodem PIN, hasłem lub wzorem, jeśli jeszcze tego nie zrobiłeś (przechodząc do „Ustawienia> Ekran blokady i zabezpieczenia> Typ blokady ekranu> Wzór / PIN / Hasło”, a następnie postępując zgodnie z instrukcjami wyświetlanymi na ekranie).
  • Uruchom aplikację „Ustawienia” na swoim urządzeniu.
  • Wybierz „Ekran blokady i zabezpieczenia”.
  • Wybierz „Skaner linii papilarnych”.
  • Postępuj zgodnie z instrukcjami, aby zarejestrować jeden lub więcej odcisków palców.

Urządzenia wirtualne z Androidem nie mają fizycznego czujnika dotykowego, więc musisz zasymulować zdarzenie dotykowe:

  • Uruchom AVD, jeśli jeszcze tego nie zrobiłeś.
  • Obok AVD zobaczysz pasek przycisków. Znajdź przycisk „Więcej” z trzema kropkami (gdzie kursor znajduje się na poniższym zrzucie ekranu) i kliknij go. Spowoduje to otwarcie okna „Rozszerzone elementy sterujące”.
  • W oknie Rozszerzone elementy sterujące wybierz „Odcisk palca”. Spowoduje to otwarcie zestawu elementów sterujących, w których można emulować różne zdarzenia dotykowe.
  • Otwórz menu rozwijane i wybierz odcisk palca, który chcesz zarejestrować na tym urządzeniu; Używam „Finger 1.”
  • Teraz skupmy się na emulowanym urządzeniu. Uruchom aplikację „Ustawienia” AVD i wybierz „Bezpieczeństwo i lokalizacja”.
  • Jeśli nie skonfigurowałeś jeszcze kodu PIN, hasła lub wzoru, wybierz „Blokada ekranu” i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zabezpieczyć ekran blokady, a następnie przejdź z powrotem do głównego ekranu „Ustawienia> Bezpieczeństwo i lokalizacja”.
  • Wybierz „Odcisk palca”, a następnie „Dodaj odcisk palca”.
  • Zostaniesz teraz poproszony o naciśnięcie palca na czujnik dotykowy. Zamiast tego klikaj „Dotknij czujnika”, aż zobaczysz „Dodany odcisk palca”.

  • Kliknij „Gotowe”.
  • Jeśli chcesz zarejestrować dodatkowe odciski palców, przepłucz je i powtórz powyższe kroki.

Po zarejestrowaniu co najmniej jednego odcisku palca możesz przystąpić do testowania aplikacji. Zamierzam przetestować, w jaki sposób nasza aplikacja obsługuje trzy różne scenariusze:

  • Użytkownik próbuje się uwierzytelnić przy użyciu zarejestrowanego odcisku palca.
  • Użytkownik próbuje się uwierzytelnić przy użyciu odcisku palca, który nie jest zarejestrowany na tym urządzeniu.
  • Użytkownik próbuje uwierzytelnić się przy użyciu niezarejestrowanych odcisków palców, wielokrotnie i szybko po sobie.

Spróbujmy uwierzytelnić za pomocą odcisku palca, który właśnie zarejestrowaliśmy na naszym urządzeniu:

  • Upewnij się, że przeglądasz Logcat Monitor w Android Studio, ponieważ w tym miejscu pojawią się różne aplikacje.

  • Zainstaluj aplikację na urządzeniu testowym.
  • Stuknij przycisk „Uwierzytelnij za pomocą odcisku palca” aplikacji. Pojawi się okno dialogowe uwierzytelniania odcisków palców.
  • Jeśli korzystasz z urządzenia fizycznego, naciśnij i przytrzymaj opuszek palca na czujniku dotykowym urządzenia. Jeśli używasz AVD, użyj przycisku „Dotknij czujnika”, aby zasymulować zdarzenie dotykowe.
  • Sprawdź monitor Logcat. Jeśli uwierzytelnianie zakończyło się powodzeniem, powinieneś zobaczyć następujące informacje: „Pomyślnie rozpoznano odcisk palca”

Następnie zobaczmy, co się stanie, jeśli spróbujemy uwierzytelnić się za pomocą odcisku palca, który nie jest zarejestrowany na tym urządzeniu:

  • Ponownie dotknij przycisku „Uwierzytelnij za pomocą odcisku palca”.
  • Jeśli używasz AVD, użyj okna „Rozszerzone elementy sterujące”, aby wybrać odcisk palca nie jest zarejestrowany na tym urządzeniu; Używam „Palca 2.” Kliknij przycisk „Dotknij czujnika”.
  • Jeśli używasz fizycznego smartfona lub tabletu z Androidem, naciśnij i przytrzymaj palec na czujniku dotykowym urządzenia - upewnij się, że używasz palca, który nie jest zarejestrowany na tym urządzeniu!
  • Sprawdź Logcat w Android Studio, powinien teraz wyświetlać „Nie rozpoznano odcisku palca”.

Jak już wspomniano, interfejs API BiometricPrompt automatycznie obsługuje nadmierne nieudane próby uwierzytelnienia. Aby przetestować tę funkcjonalność:

  • Naciśnij przycisk „Uwierzytelnij za pomocą odcisku palca” w aplikacji.
  • Próba wielokrotnego uwierzytelnienia w krótkim odstępie czasu przy użyciu niezarejestrowanego odcisku palca.
  • Po kilku próbach okno dialogowe powinno zamknąć się automatycznie. Sprawdź Logcat w Android Studio, a powinieneś zobaczyć: „Wystąpił nieodwracalny błąd”.

Możesz pobrać pełną aplikację z GitHub.

Podsumowując

W tym artykule omówiliśmy nowy interfejs API BiometricPrompt systemu Android Pie, który pozwala łatwo dodawać uwierzytelnianie odcisków palców do aplikacji. Czy uważasz, że BiometricPrompt stanowi ulepszenie poprzednich metod uwierzytelniania odcisków palców w Androidzie? Daj nam znać w komentarzach poniżej!

Wycieki z Google Pixel 4 tały ię w tym momencie nieubłagane. Od pecyfikacji do projektu, a nawet daty premiery, przecieki mniej więcej zepuły imprezę dla fanów i Google. Nowy wyciek daje teraz wi...

Adamya harmaAktualizacja, 30 września 2019 r. (03:48 ET): 9to5Google pierwotnie zauważył, że gety głośnomówiące Pixela 4 będą dotępne tylko na 38 rynkach. Teraz, XDA-Developer odkrył więcej dowod...

Interesujący Na Stronie