Přidejte do aplikace autentizaci pomocí otisků prstů pomocí BiometricPrompt

Autor: Lewis Jackson
Datum Vytvoření: 13 Smět 2021
Datum Aktualizace: 1 Červenec 2024
Anonim
Přidejte do aplikace autentizaci pomocí otisků prstů pomocí BiometricPrompt - Aplikace
Přidejte do aplikace autentizaci pomocí otisků prstů pomocí BiometricPrompt - Aplikace

Obsah


Použijte rozhraní BiometricPrompt API k vytvoření aplikace, která uživateli umožní ověřit jeho totožnost pomocí otisku prstu.

Otevřete Android Studio a vytvořte nový projekt pomocí šablony „Prázdná aktivita“. Až budete vyzváni, nastavte minimální SDK projektu na 28 nebo vyšší, protože to zabrání instalaci aplikace na něco dříve než Android Pie.

Pokud chcete svou aplikaci zpřístupnit širšímu okruhu zařízení Android, musíte zkontrolovat, na které verzi aplikace Android je vaše aplikace aktuálně nainstalována, a potom biometrickou autentizaci zpracovat odlišně, v závislosti na úrovni API zařízení.

Přidejte biometrickou knihovnu

Nejprve otevřete soubor build.gradle na úrovni modulu a jako závislost na projektu přidejte nejnovější verzi knihovny Biometric:

závislosti {implementace androidx.biometric: biometric: 1.0.0-alpha03

Přidejte oprávnění USE_BIOMETRIC

Rozhraní BiometricPrompt API umožňuje prostřednictvím jediného povolení využívat všechny různé metody biometrické autentizace, které zařízení podporuje.


Otevřete manifest projektu a přidejte oprávnění „USE_BIOMETRIC“:

Vytvořte rozvržení aplikace

Dále vytvořme rozvržení naší aplikace. Přidám jediné tlačítko, které po klepnutí spustí dialog pro ověření otisku prstu:

Otevřete soubor strings.xml projektu a přidejte řetězec „auth“:

BiometricPromptSample Ověřování pomocí otisků prstů

Ověření totožnosti uživatele

Nyní se podívejme na to, jak byste ověřili totožnost uživatele pomocí BiometricPrompt.


Vytvořte instanci biometrické výzvy

Třída BiometricPrompt zahrnuje doprovodnou třídu Builder (), kterou můžete použít k vytvoření instance BiometricPrompt a zahájení autentizace:

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

Při vytváření instance BiometricPrompt budete muset definovat text, který by se měl objevit v ověřovacím dialogu, a upravit „negativní tlačítko“, což je tlačítko, které umožňuje uživateli zrušit ověření.

Chcete-li konfigurovat dialog pro ověření, musíte poskytnout následující:

  • setTitle. Název výzvy k ověření otisků prstů. (Povinný)
  • setSubtitle. Podnadpis výzvy k ověřování otisků prstů. (Volitelný)
  • setDescription. Další popis, který se zobrazí v dialogu pro ověření. (Volitelný)
  • setNegativeButton (text, vykonavatel, posluchač). Toto je popisek negativního tlačítka, například „Zrušit“ nebo „Konec“. Při konfiguraci negativního tlačítka musíte také poskytnout instanci Exekutor a OnClickListener, aby uživatel mohl zavřít dialog pro ověření.

V době psaní nebylo možné přizpůsobit ikonu nebo chybu, která se používá v ověřovacím dialogu.

Nakonec budete muset zavolat build (). To nám dává následující:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Název textu jde sem") .setSubtitle ("Titulky sem jde") .setDescription ("Toto je popis") .setNegativeButtonText ("Cancel") .stavět();

Zpracovat zpětná volání ověřování

K instanci BiometricPrompt je přiřazena sada metod zpětného volání ověřování, které upozorní vaši aplikaci na výsledky procesu autentizace.

Budete muset zabalit všechna tato zpětná volání do instance třídy BiometricPrompt.AuthenticationCallback:

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

Dalším krokem je implementace některých nebo všech následujících metod zpětného volání:

1. onAuthenticationSucceeded ()

Tato metoda se volá, když je otisk prstu úspěšně přiřazen jednomu z otisků prstů zaregistrovaných v zařízení. V tomto scénáři je objekt AuthenticationResult předán zpětnému volání onAuthenticationSucceeded a vaše aplikace poté provede úlohu jako odpověď na tuto úspěšnou autentizaci.

Abychom vám pomohli udržet věci v jednoduchosti, naše aplikace odpoví vytisknutím logca aplikace Android Studio:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationVýsledek výsledku) {super.onAuthenticationSucceeded (result); Log.d (TAG, „Otisk prstu byl úspěšně rozpoznán“); }

2. onAuthenticationFailed ()

Tato metoda se spustí, když je skenování úspěšně dokončeno, ale otisk prstu neodpovídá žádnému výtisku zaregistrovanému v zařízení. Naše aplikace bude opět reagovat na tuto autentizační událost vytištěním na Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, „Fingerprint nebyl rozpoznán“); }

3. onAuthenticationError

Toto zpětné volání se spustí vždy, když nastane neopravitelná chyba a autentizaci nelze úspěšně dokončit. Například je možné, že dotykový senzor zařízení je znečištěn nečistotami nebo mastnotou, uživatel nezaregistroval žádné otisky prstů na tomto zařízení nebo není k dispozici dostatek paměti k provedení úplného biometrického skenování.

Zde je kód, který budu používat ve své aplikaci:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Došlo k neopravitelné chybě"); }}

4. onAuthenticationHelp

Metoda onAuthenticationHelp je volána vždy, když se vyskytne závažná chyba, a zahrnuje nápovědu a kód, který poskytuje další informace o chybě.

Abychom udrželi náš kód přímočarý, nebudu v naší aplikaci používat onAuthenticationHelp, ale implementace by vypadala asi takto:

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

Nakonec musíme zavolat metodu autentify () instance BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Implementace biometrické autentizace pro Android Pie

Jakmile dokončíte všechny výše uvedené kroky, měla by vaše MainActivity vypadat asi takto:

import androidx.appcompat.app.AppCompatActivity; import androidx.biometric.BiometricPrompt; import android.os.Bundle; importovat java.util.concurrent.Executor; import java.util.concurrent.Executorů; import androidx.fragment.app.FragmentActivity; import android.util.Log; import android.view.View; import androidx.annotation.NonNull; public class MainActivity rozšiřuje AppCompatActivity {private static final String TAG = MainActivity.class.getName (); @Override chráněné void onCreate (Bundle uloženéInstanceState) {super.onCreate (uloženéInstanceState); setContentView (R.layout.activity_main); // Vytvoření fondu vláken s jediným vláknem // Executor newExecutor = Executor.newSingleThreadExecutor (); FragmentActivity activity = this; // Začněte poslouchat autentizační události // final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activity, newExecutor, new BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError je volána, když dojde k závažné chybě // public void onAuthenticationError (int errorNode @ intonCull, int errorNode @ intonCull, int errorNode @ intonCull @ int, CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Vytisknout do Logcat // Log.d (TAG, "Došlo k neodstranitelné chybě");}} // onAuthenticationSucceeded se volá, když se otisk prstu shoduje úspěšně // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result); rozpoznáno úspěšně ");} // onAuthenticationFailed se volá, když se otisk prstu neshoduje // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Vytisknout do protokolu cat // Log.d (TAG, „Fingerprint nerozpoznán“); }}); // Vytvořte instanci BiometricPrompt // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Přidejte nějaký text do dialogu // .setTitle ("Titulní text jde sem") .setSubtitle ("Titulky jde sem") ) .setDescription ("Toto je popis") .setNegativeButtonText ("Cancel") // Vytvoření dialogu // .build (); // Přiřaďte onClickListener tlačítku „Authentication“ // findViewById (R.id.launchAuthentication) .setOnClickListener (nové zobrazení.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo);} }); }}

Testování vašeho projektu

Nyní jste vytvořili svůj projekt, je čas ho vyzkoušet a zjistit, zda skutečně do vaší aplikace přidává autentizaci pomocí otisků prstů!

Chcete-li tento projekt spustit, budete potřebovat buď fyzický smartphone nebo tablet se systémem Android Pie, nebo virtuální zařízení Android (AVD), které používá náhled Android P nebo vyšší.

Ve svém zařízení musíte také zaregistrovat alespoň jeden otisk prstu. Pokud používáte fyzické zařízení Android, postupujte takto:

  • Pokud jste tak již neučinili, zajistěte si obrazovku s kódem PIN, heslem nebo vzorem (přejděte na „Nastavení> Zámek obrazovky a zabezpečení> Typ zámku obrazovky> Vzor / Pin / Heslo“ a poté postupujte podle pokynů na obrazovce).
  • Spusťte v zařízení aplikaci „Nastavení“.
  • Vyberte „Zamknout obrazovku a zabezpečení“.
  • Vyberte „Skener otisků prstů“.
  • Podle pokynů zaregistrujte jeden nebo více otisků prstů.

Virtuální zařízení Android nemají fyzický dotykový senzor, takže budete muset simulovat dotykovou událost:

  • Spusťte AVD, pokud jste tak již neučinili.
  • Vedle AVD uvidíte pruh tlačítek. Najděte tlačítko se třemi tečkami „Více“ (kde je kurzor umístěn na následující obrazovce) a klikněte na něj. Tím se otevře okno „Rozšířené ovládání“.
  • V okně Rozšířené ovládací prvky vyberte „Otisk prstu“. Otevře se sada ovládacích prvků, kde můžete emulovat různé události dotyku.
  • Otevřete rozbalovací nabídku a vyberte otisk prstu, který chcete v tomto zařízení zaregistrovat; Používám „prst 1.“
  • Nyní se zaměřme na emulované zařízení. Spusťte aplikaci AVD „Nastavení“ a vyberte „Zabezpečení a umístění“.
  • Pokud jste ještě nenastavili kód PIN, heslo ani vzor, ​​vyberte možnost „Zámek obrazovky“ a podle pokynů na obrazovce zabezpečte obrazovku zámku a přejděte zpět na hlavní obrazovku „Nastavení> Zabezpečení a umístění“.
  • Vyberte „Otisk prstu“ a poté „Přidat otisk prstu“.
  • Nyní budete vyzváni, abyste stiskli prst na dotykovém senzoru. Místo toho klikněte na „Touch the Sensor“, dokud se nezobrazí „Fingerprint added“.

  • Klikněte na „Hotovo“.
  • Pokud chcete zaregistrovat další otisky prstů, vypláchněte je a opakujte výše uvedené kroky.

Jakmile zaregistrujete alespoň jeden otisk prstu, jste připraveni otestovat svou aplikaci. Budu testovat, jak naše aplikace zpracovává tři různé scénáře:

  • Uživatel se pokusí o ověření pomocí registrovaného otisku prstu.
  • Uživatel se pokusí o ověření pomocí otisku prstu, který není v tomto zařízení zaregistrován.
  • Uživatel se pokusí o ověření pomocí neregistrovaných otisků prstů, vícekrát a rychle za sebou.

Zkusme se autentizovat pomocí otisku prstu, který jsme právě zaregistrovali na našem zařízení:

  • Zkontrolujte, zda prohlížíte Logcat Monitor pro Android Studio, protože se zde objeví různé aplikace.

  • Nainstalujte aplikaci na zkušební zařízení.
  • Klepněte na tlačítko „Ověřit pomocí otisků prstů“ vaší aplikace. Zobrazí se dialogové okno ověřování otisku prstu.
  • Pokud používáte fyzické zařízení, stiskněte a podržte prst na dotykovém senzoru zařízení. Pokud používáte AVD, simulujte dotykovou událost pomocí tlačítka „Touch the sensor“.
  • Zkontrolujte Logcat Monitor. Pokud bylo ověření úspěšné, mělo by se zobrazit následující: „Otisk prstu byl úspěšně rozpoznán“

Dále se podívejme, co se stane, pokud se pokusíme o ověření pomocí otisku prstu, který není v tomto zařízení zaregistrován:

  • Znovu klepněte na tlačítko „Ověřit pomocí otisků prstů“ v aplikaci.
  • Pokud používáte AVD, pak pomocí okna „Rozšířené ovládání“ vyberte otisk prstu není registrován na tomto zařízení; Používám „prst 2.“ Klikněte na tlačítko „Dotkněte se senzoru“.
  • Pokud používáte fyzický smartphone nebo tablet Android, stiskněte a podržte prst na dotykovém senzoru zařízení - ujistěte se, že používáte prst, který není v tomto zařízení zaregistrován!
  • Podívejte se na Logcat pro Android Studio, nyní by mělo být zobrazeno „Fingerprint not rozpoznán“.

Jak již bylo uvedeno, BiometricPrompt API automaticky zpracovává nadměrné neúspěšné pokusy o ověření. Chcete-li otestovat tuto funkci:

  • Klepněte na tlačítko „Ověřit pomocí otisku prstu“ ve vaší aplikaci.
  • Pokus o ověření vícekrát v rychlém sledu pomocí neregistrovaného otisků prstů.
  • Po několika pokusech by se dialogové okno mělo zavřít automaticky. Podívejte se na Logcat pro Android Studio a měli byste vidět následující: „Došlo k neopravitelné chybě.“

Kompletní aplikaci si můžete stáhnout z GitHubu.

Zabalení

V tomto článku jsme prozkoumali nové rozhraní BiometricPrompt API pro Android Pie, které vám umožní snadno přidat ověřování otisku prstu do vaší aplikace. Myslíte si, že BiometricPrompt je vylepšením předchozích metod ověřování otisků prstů v systému Android? Dejte nám vědět v komentářích níže!

Mapy Google jou nejoblíbenější aplikací pro zíkání tray jízdy z jednoho míta na druhé. Na vaší cetě však někdy budou překážky, o nichž nevít...

Mapy Google přijímají dvě nové aktualizace, které nad budou mít o něco lepší uživatelký dojem. Policie Android všiml i nový oddíl „Váš tranzit“, kte...

Výběr Stránek