Добавете удостоверяване с пръстов отпечатък към приложението си, като използвате BiometricPrompt

Автор: Lewis Jackson
Дата На Създаване: 13 Може 2021
Дата На Актуализиране: 1 Юли 2024
Anonim
Добавете удостоверяване с пръстов отпечатък към приложението си, като използвате BiometricPrompt - Приложения
Добавете удостоверяване с пръстов отпечатък към приложението си, като използвате BiometricPrompt - Приложения

Съдържание


Нека използваме API на BiometricPrompt, за да създадем приложение, което ще позволи на потребителя да потвърди самоличността си с помощта на пръстов отпечатък.

Отворете Android Studio и създайте нов проект, като използвате шаблона „Празна активност“. Когато бъдете подканени, задайте минималния SDK на вашия проект на 28 или по-висок, тъй като това ще попречи на приложението ви да бъде инсталирано на нещо по-рано от Android Pie.

Ако искате да направите приложението си достъпно за по-широк спектър от устройства с Android, трябва да проверите на каква версия на Android приложението ви е инсталирано в момента и след това да обработите биометричното удостоверяване по различен начин, в зависимост от нивото на API на устройството.

Добавете Биометричната библиотека

За да започнете, отворете файла на build.gradle на ниво модул и добавете най-новата версия на Биометричната библиотека като зависимост на проекта:

зависимости {внедряване androidx.biometric: biometric: 1.0.0-alpha03

Добавете разрешението USE_BIOMETRIC

API на BiometricPrompt ви позволява да използвате всички различни методи на биометрична идентификация, които устройството поддържа, с едно разрешение.


Отворете манифеста на проекта си и добавете разрешението „USE_BIOMETRIC“:

Създайте оформлението на приложението си

След това нека създадем оформлението на нашето приложение. Ще добавя един бутон, който при натискане ще стартира диалоговия прозорец за удостоверяване на пръстови отпечатъци:

Отворете файла strings.xml на вашия проект и добавете ресурс за низове „auth“:

BiometricPromptSample Удостоверете с пръстов отпечатък

Удостоверяване на самоличността на потребителя

Сега, нека да разгледаме как ще удостоверите самоличността на потребителя, използвайки BiometricPrompt.


Създайте биометричен бърз екземпляр

Класът BiometricPrompt включва съпътстващ клас Builder (), който можете да използвате за създаване на инстанция BiometricPrompt и иницииране на удостоверяването:

окончателен BiometricPrompt.PromptInfo promptInfo = нов BiometricPrompt.PromptInfo.Builder ()

Когато изграждате своя екземпляр BiometricPrompt, ще трябва да определите текста, който трябва да се появи в диалоговия прозорец за удостоверяване, и да персонализирате „отрицателния бутон“, който е бутона, който позволява на потребителя да анулира удостоверяването.

За да конфигурирате диалоговия прозорец за удостоверяване, ще трябва да предоставите следното:

  • setTitle. Заглавието на подкана за пръстово отпечатване. (Задължително)
  • setSubtitle. Подзаглавието на подкана за отпечатване на пръстови отпечатъци. (Незадължително)
  • setDescription. Допълнително описание, което ще бъде показано в диалоговия прозорец за удостоверяване. (Незадължително)
  • setNegativeButton (текст, изпълнител, слушател). Това е етикетът на отрицателния бутон, например „Отказ“ или „Изход“. Когато конфигурирате отрицателния бутон, ще трябва също да предоставите екземпляр на Изпълнител и OnClickListener, така че потребителят да може да отхвърли диалога за удостоверяване.

По време на писането не беше възможно да персонализирате иконата или грешката, използвана в диалоговия прозорец за удостоверяване.

Накрая ще трябва да се обадите на build (). Това ни дава следното:

окончателен BiometricPrompt.PromptInfo promptInfo = нов BiometricPrompt.PromptInfo.Builder () .setTitle ("Текстът на заглавието върви тук") .setSubtitle ("Субтитрите отиват тук") .setDescription ("Това е описанието") .setNegativeButtonText ("Отказ") .build ();

Работете с обратните повиквания за удостоверяване

На екземпляра BiometricPrompt е назначен набор от методи за обратно извикване на удостоверяване, които ще уведомяват приложението ви за резултатите от процеса на удостоверяване.

Ще трябва да увиете всички тези обратни повиквания в екземпляр от клас BiometricPrompt.AuthenticationCallback:

окончателен BiometricPrompt myBiometricPrompt = нов BiometricPrompt (дейност, новExecutor, нов BiometricPrompt.AuthenticationCallback () {

Следващата стъпка е прилагането на някои или всички от следните методи за обратно извикване:

1. onAuthenticationSucceeded ()

Този метод се нарича, когато пръстовият отпечатък се съпостави успешно с един от отпечатъците, регистрирани на устройството. В този сценарий обектът AuthenticationResult се предава на обратното извикване на onAuthenticationSucceeded и след това приложението ви ще изпълни задача в отговор на това успешно удостоверяване.

За да улесним нещата, нашето приложение ще отговори чрез отпечатване на Logcat на Android Studio:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult резултат) {super.onAuthenticationSucceeded (резултат); Log.d (TAG, "Отпечатъкът е разпознат успешно"); }

2. onAuthenticationFailed ()

Този метод се задейства, когато сканирането приключи успешно, но пръстовият отпечатък не съвпада с нито един от отпечатъците, регистрирани на устройството. Отново, нашето приложение ще отговори на това събитие за удостоверяване чрез отпечатване на Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Отпечатъкът не е разпознат"); }

3. onAuthenticationError

Това обратно извикване се задейства, когато възникне невъзстановима грешка и удостоверяването не може да бъде завършено успешно. Например, може би сензорният сензор на устройството е покрит от замърсявания или мазнини, потребителят не е регистрирал никакви отпечатъци на това устройство или няма достатъчно памет за извършване на пълно биометрично сканиране.

Ето кода, който ще използвам в приложението си:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Възникна невъзстановима грешка"); }}

4. onAuthenticationHelp

Методът onAuthenticationHelp се извиква всеки път, когато се появи не-фатална грешка и включва помощен код и a, които предоставят допълнителна информация за грешката.

За да запазя кода си лесно, няма да използвам onAuthenticationHelp в нашето приложение, но едно изпълнение ще изглежда така:

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

И накрая, трябва да се обадим на метода за удостоверяване () на инстанцията BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Внедряване на биометрично удостоверяване на Android Pie

След като изпълните всички горепосочени стъпки, вашата MainActivity трябва да изглежда така:

импортиране на androidx.appcompat.app.AppCompatActivity; импортиране на androidx.biometric.BiometricPrompt; импортиране на android.os.Bundle; импортиране на java.util.concurrent.Executor; импортиране на java.util.concurrent.Execctors; импортиране на androidx.fragment.app.FragmentActivity; import android.util.Log; import android.view.View; импортиране androidx.annotation.NonNull; обществен клас MainActivity разширява AppCompatActivity {частен статичен окончателен String TAG = MainActivity.class.getName (); @Override защитена празнота onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState); setContentView (R.layout.activity_main); // Създайте пул с нишки с една нишка // Executor newExecutor = Executors.newSingleThreadExecutor (); Дейност на FragmentActivity = това; // Започнете да слушате събития за удостоверяване // окончателен BiometricPrompt myBiometricPrompt = нов BiometricPrompt (активност, newExecutor, нов BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError се извиква, когато се появява фатална грешка // публична void onAuthenticationErll (inintutonCerror CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Печат на Logcat // Log.d (TAG, "Възникна невъзстановима грешка")}}} // onAuthenticationSucceeded се извиква, когато пръстовият отпечатък е съчетан успешно // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult резултат) {super.onAuthenticationSucceeded (result); // Печат на Logcat // Log.d (TAG, "Fingerprint разпознат успешно ");} // onAuthenticationFailed се извиква, когато пръстовият отпечатък не съвпада // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Отпечатване в лог cat // Log.d (TAG, "Отпечатъкът не е разпознат"); }}); // Създаване на инстанцията BiometricPrompt // окончателен BiometricPrompt.PromptInfo promptInfo = нов BiometricPrompt.PromptInfo.Builder () // Добавяне на текст в диалоговия прозорец // .setTitle ("Текстът на заглавието идва тук") .setSubtitle ("Субтитрите отиват тук" ) .setDescription ("Това е описанието") .setNegativeButtonText ("Отказ") // Създайте диалоговия прозорец // .build (); // Присвойте onClickListener на бутона „Удостоверяване“ на приложението // findViewById (R.id.launchAuthentication) .setOnClickListener (нов View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate} (promptInfofoot); }); }}

Тестване на вашия проект

Сега вие създадохте своя проект, време е да го поставите на тест и да видите дали той действително добавя удостоверяване с пръстов отпечатък към приложението ви!

За да стартирате този проект, ще ви трябва или физически смартфон или таблет, на който работи Android Pie, или виртуално устройство за Android (AVD), което използва визуализацията на Android P или по-нова версия.

Освен това ще трябва да регистрирате поне един пръстов отпечатък на устройството си. Ако използвате физическо устройство с Android, тогава:

  • Осигурете вашия заключващ екран с ПИН, парола или модел, ако още не сте го (като отидете на „Настройки> Заключен екран и защита> Тип заключване на екрана> Шаблон / ПИН / Парола“ и след това следвайте инструкциите на екрана).
  • Стартирайте приложението „Настройки“ на устройството си.
  • Изберете „Заключване на екрана и сигурност“.
  • Изберете „Скенер за пръстови отпечатъци“.
  • Следвайте инструкциите, за да регистрирате един или повече пръстови отпечатъци.

Android виртуалните устройства нямат физически сензор за докосване, така че ще трябва да симулирате събитие с докосване:

  • Стартирайте AVD, ако още не сте го направили.
  • Покрай AVD ще видите лента с бутони. Намерете триточков бутон „Още“ (където курсорът е разположен на следната екранна снимка) и го кликнете. Това стартира прозореца „Разширени контроли“.
  • В прозореца за разширени контроли изберете „Fingerprint.“ Това отваря набор от контроли, където можете да подражавате на различни сензорни събития.
  • Отворете падащото меню и изберете пръстовия отпечатък, който искате да регистрирате на това устройство; Използвам „Finger 1.“
  • Сега, нека да насочим вниманието си към емулираното устройство. Стартирайте приложението „Настройки“ на AVD и изберете „Защита и местоположение“.
  • Ако още не сте задали ПИН, парола или модел, след това изберете „Заключване на екрана“ и следвайте инструкциите на екрана, за да защитите вашия заключващ екран, след което се върнете към главния екран „Настройки> Защита и местоположение“.
  • Изберете „Fingerprint“, последван от „Add fingerprint“.
  • Сега ще бъдете подканени да натиснете пръста си върху сензора за докосване. Вместо това, продължавайте да щракнете върху „Докоснете сензора“, докато не видите „Fingerprint added“.

  • Кликнете върху „Готово“.
  • Ако искате да регистрирате допълнителни пръстови отпечатъци, изплакнете и повторете горните стъпки.

След като регистрирате поне един пръстов отпечатък, вие сте готови да подложите молбата си на тест. Ще тествам как нашето приложение се справя с три различни сценария:

  • Потребителят се опитва да се идентифицира с помощта на регистриран пръстов отпечатък.
  • Потребителят се опитва да удостоверява с пръстов отпечатък, който не е регистриран на това устройство.
  • Потребителят се опитва да удостоверява, използвайки нерегистрирани пръстови отпечатъци, многократно и бързо.

Нека се опитаме да удостоверим с помощта на пръстовия отпечатък, който току-що регистрирахме на нашето устройство:

  • Уверете се, че гледате монитора на Logcat на Android Studio, тъй като тук ще се показват различните приложения на вашето приложение.

  • Инсталирайте приложението си на тестовото устройство.
  • Докоснете бутона „Удостоверяване с пръстов отпечатък“ на приложението си Ще се появи диалоговият прозорец за удостоверяване на пръстови отпечатъци.
  • Ако използвате физическо устройство, натиснете и задръжте върха на пръста си срещу сензорния сензор на устройството. Ако използвате AVD, използвайте бутона „Докоснете сензора“, за да симулирате събитие с докосване.
  • Проверете монитора Logcat. Ако удостоверяването е било успешно, тогава трябва да видите следното: „Отпечатъкът е разпознат успешно“

На следващо място, нека видим какво ще се случи, ако се опитаме да удостоверим с помощта на пръстов отпечатък, който не е регистриран на това устройство:

  • Докоснете отново бутона „Удостоверяване с пръстов отпечатък“ на приложението.
  • Ако използвате AVD, използвайте прозореца „Разширени контроли“, за да изберете пръстов отпечатък, който не е регистрирани на това устройство; Използвам „Пръст 2.“ Щракнете върху бутона „Докоснете сензора“.
  • Ако използвате физически смартфон или таблет с Android, след това натиснете и задръжте пръста си върху сензорния сензор на устройството - уверете се, че използвате пръст, който не е регистриран на това устройство!
  • Проверете Logcat на Android Studio, сега трябва да се показва „Отпечатъкът не е разпознат“.

Както вече споменахме, BiometricPrompt API автоматично обработва прекомерни неуспешни опити за удостоверяване. За да тествате тази функционалност:

  • Докоснете бутона „Удостоверяване с пръстов отпечатък“ на приложението си.
  • Опитайте да удостоверите няколко пъти в бърза последователност, като използвате нерегистриран пръстов отпечатък.
  • След няколко опита диалоговият прозорец трябва да се затвори автоматично. Проверете Logcat на Android Studio и трябва да видите следното: „Възникна невъзстановима грешка.“

Можете да изтеглите пълното приложение от GitHub.

Обобщавайки

В тази статия разгледахме новия BiometricPrompt API на Android Pie, който ви позволява лесно да добавяте автентификация на пръстови отпечатъци към приложението си. Мислите ли, че BiometricPrompt е подобрение на предишните методи за удостоверяване на пръстови отпечатъци на Android? Уведомете ни в коментарите по-долу!

Добре дошли в 279-ото издание на! Ето големите заглавия от последната седмица:Зловредният софтуер става все по-умен през цялото време. Отчет тази седмица показа нов тип злонамерен софтуер. Този конкр...

Телевизорът Honor Viion се обозначава като „интелигентен екран“ и в момента е наличен само в Китай. Изглежда обаче, че международните потребители скоро могат да очакват вариант или съвсем различно пре...

Популярни Публикации