![Adja hozzá az ujjlenyomat-hitelesítést alkalmazásához a Biometriaprompt használatával - Alkalmazások Adja hozzá az ujjlenyomat-hitelesítést alkalmazásához a Biometriaprompt használatával - Alkalmazások](https://a.23rdpta.org/apps/add-fingerprint-authentication-to-your-app-using-biometricprompt-1.png)
Tartalom
- Adja hozzá a biometrikus könyvtárat
- Adja hozzá a USE_BIOMETRIC engedélyt
- Hozza létre az alkalmazás elrendezését
- A felhasználó személyazonosságának hitelesítése
- Hozzon létre egy biometrikus gyors példányt
- Kezelje a hitelesítési visszahívásokat
- 1. onAuthenticationSucceched ()
- 2. onAuthenticationFailed ()
- 3. onAuthenticationError
- 4. onAuthenticationHelp
- Az Android Pie biometrikus hitelesítésének végrehajtása
- A projekt tesztelése
- Csomagolás
Használjuk a BiometricPrompt API-t egy alkalmazás létrehozásához, amely lehetővé teszi a felhasználó számára ujjlenyomat segítségével személyazonosságának megerősítését.
Nyissa meg az Android Studio alkalmazást, és hozzon létre egy új projektet az „Üres tevékenység” sablon használatával. Amikor a rendszer kéri, állítsa a projekt minimális SDK-ját 28-ra vagy magasabbra, mivel ez megakadályozza az alkalmazás telepítését az Android Pie-nél korábban.
Ha azt akarta, hogy az alkalmazás elérhetővé váljon az Android készülékek szélesebb köre számára, akkor ellenőriznie kell, hogy az Android melyik verziójára van jelenleg telepítve az alkalmazás, majd a biometrikus hitelesítést az eszköz API szintjétől függően különféleképpen kell kezelnie.
Adja hozzá a biometrikus könyvtárat
Az induláshoz nyissa meg a modulszintű build.gradle fájlt, és projektfüggőségként adja hozzá a Biometrikus könyvtár legújabb verzióját:
függőségek {androidx.biometrikus megvalósítás: biometrikus: 1.0.0-alpha03
Adja hozzá a USE_BIOMETRIC engedélyt
A Biometriaprompt API lehetővé teszi az eszköz által támogatott különféle biometrikus hitelesítési módszerek használatát egyetlen engedély révén.
Nyissa meg a projekt manifestjét, és adja hozzá az „USE_BIOMETRIC” engedélyt:
Hozza létre az alkalmazás elrendezését
Ezután készítsük el alkalmazásunk elrendezését. Egyetlen gombot fogok hozzáadni, amely megérintésével elindítja az ujjlenyomat-hitelesítési párbeszédablakot:
Nyissa meg a projekt strings.xml fájlját, és adja hozzá az „auth” karakterlánc-erőforrást:
A felhasználó személyazonosságának hitelesítése
Most nézzük meg, hogyan hitelesítette a felhasználó személyazonosságát a Biometrikus Prompt segítségével.
Hozzon létre egy biometrikus gyors példányt
A Biometrikus Prompt osztály tartalmaz egy társ Builder () osztályt, amelyet felhasználhat Biometrikus Prompt példány létrehozásához és a hitelesítés kezdeményezéséhez:
végleges Biometrikus Prompt.PromptInfo promptInfo = új Biometrikus Prompt.PromptInfo.Builder ()
A Biometrikus Prompt példány felépítésekor meg kell határoznia a hitelesítési párbeszédpanelen megjelenő szöveget, és testre kell szabnia a „negatív gombot”, amely a felhasználó számára lehetővé teszi a hitelesítés megszakítását.
A hitelesítési párbeszédpanel konfigurálásához a következőket kell megadnia:
- setTitle. Az ujjlenyomat-hitelesítési prompt címe. (Kívánt)
- setSubtitle. Az ujjlenyomat-hitelesítési prompt felirata. (Választható)
- setDescription. További leírás, amely megjelenik a hitelesítési párbeszédpanelen. (Választható)
- setNegativeButton (szöveg, végrehajtó, figyelő). Ez a negatív gomb címkéje, például „Mégse” vagy „Kilépés”. A negatív gomb konfigurálásakor be kell adnia egy Executor példányt és egy OnClickListener szoftvert is, hogy a felhasználó elutasítsa a hitelesítési párbeszédpanelt.
Az írás idején a hitelesítési párbeszédpanelen használt ikont vagy hibát nem lehetett testreszabni.
Végül be kell hívnia az build () -et. Ez a következőket adja nekünk:
final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("A címsor itt megy") .setSubtitle ("A felirat ide kerül") .setDescription ("Ez a leírás") .setNegativeButtonText ("Mégsem") .épít();
Kezelje a hitelesítési visszahívásokat
A Biometrikus Prompt példányhoz olyan hitelesítési visszahívási módszerek vannak hozzárendelve, amelyek értesítik az alkalmazást a hitelesítési folyamat eredményéről.
Az összes visszahívást be kell csomagolnia egy Biometrikus Prompt.AuthenticationCallback osztálypéldányba:
végleges Biometrikus Prompt myBiometrPrompt = új Biometrikus Prompt (tevékenység, newExecutor, új Biometrikus Prompt.AuthenticationCallback () {
A következő lépés a következő visszahívási módszerek közül néhány vagy mindegyikének végrehajtása:
1. onAuthenticationSucceched ()
Ezt a módszert akkor hívják, ha az ujjlenyomatot sikeresen illeszti az eszközön regisztrált egyik ujjlenyomathoz. Ebben a forgatókönyvben egy AuthenticationResult objektumot továbbítanak az onAuthenticationSucceched visszahíváshoz, és az alkalmazás ezután elvégzi a feladatot a sikeres hitelesítésre válaszul.
A dolgok egyszerűségének megkönnyítése érdekében alkalmazásunk azáltal válaszol, hogy kinyomtatja az Android Studio Logcat oldalára:
@A nyilvános érvénytelenség érvénytelenítése onAuthenticationSucceched (@NonNull Biometrikus Prompt.AuthenticationResult eredmény) {super.onAuthenticationSucceched (eredmény); Log.d (TAG, "Ujjlenyomat sikeresen felismerve"); }
2. onAuthenticationFailed ()
Ezt a módszert akkor indítják el, ha a szkennelés sikeresen befejeződik, de az ujjlenyomat nem felel meg az eszközön regisztrált nyomatok egyikének sem. Újra, alkalmazásunk válaszol erre a hitelesítési eseményre, a Logcat-re nyomtatva:
@A nyilvános érvénytelenség felülírása onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Az ujjlenyomatot nem ismeri fel"); }
3. onAuthenticationError
Ez a visszahívás akkor vált ki, amikor helyrehozhatatlan hiba jelentkezik, és a hitelesítés nem fejezhető be sikeresen. Például, az eszköz érintőérzékelőjét szennyeződés vagy zsír borítja, a felhasználó nem regisztrált ujjlenyomatokat ezen az eszközön, vagy nincs elég memória a teljes biometrikus vizsgálat elvégzéséhez.
Íme a kód, amelyet használni fogok az alkalmazásomban:
@A nyilvános void felülbírálása onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Helyrehozhatatlan hiba történt"); }}
4. onAuthenticationHelp
Az onAuthenticationHelp módszert akkor hívják meg, amikor nem halálos hiba történik, és tartalmaz egy súgókódot, valamint egy, amely további információkat nyújt a hibáról.
A kód egyértelműségének megőrzése érdekében nem használom az onAuthenticationHelp alkalmazást, de a megvalósítás így néz ki:
@A nyilvános érvénytelenség onAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString) felülírása; biometricCallback.onAuthenticationHelp (helpCode, helpString); }
Végül meg kell hívnunk a Biometrikus Prompt példány hitelesítési () módszerét:
myBiometricPrompt.authenticate (promptInfo);
Az Android Pie biometrikus hitelesítésének végrehajtása
Miután elvégezte a fenti lépéseket, a MainActivity-nek így kell kinéznie:
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; MainActivity nyilvános osztály kiterjeszti az AppCompatActivity {magán statikus végleges karakterláncot TAG = MainActivity.class.getName (); @ Felülírja a védett érvénytelen onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Szálakkészlet létrehozása egyetlen szállal // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity aktivitás = ez; // Hallgassa meg a hitelesítési eseményeket // végleges Biometrikus Prompt myBiometrPrompt = új Biometrikus Prompt (tevékenység, newExecutor, új Biometrikus Prompt.AuthenticationCallback () {@Override // onAuthenticationError hívásra kerül, ha halálos hiba fordul elő // public void onAuthenticationError (int errorCode, CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} egyébként {// Print a a Logcat // Log.d (TAG, "Helyrehozhatatlan hiba történt);}}} // onAuthenticationSuccezed hívásra kerül, ha az ujjlenyomat sikeresen illeszkedik // @Oreride public void onAuthenticationSucceched (@NonNull BiometricPrompt.AuthenticationResult eredmény) {super.onAuthenticationSucceched (eredmény); // Print a Logcat // Log.d (TAG, "Fingerprint sikeresen felismert ");} // onAuthenticationFailed hívásra kerül, ha az ujjlenyomat nem egyezik meg. macska // Log.d (TAG, "Ujjlenyomatot nem ismerik fel"); }}); // Hozza létre a Biometrikus Prompt példányt // végleges Biometrikus Prompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Adjon hozzá szöveget a párbeszédpanelhez. // .setTitle ("A cím szövege ide kerül") .setSubtitle ("A felirat ide kerül") ) .setDescription ("Ez a leírás") .setNegativeButtonText ("Mégse") // A párbeszédpanel felépítése // .build (); // Az onClickListener hozzárendelése az alkalmazás „Hitelesítés” gombjához // findViewById (R.id.launchAuthentication) .setOnClickListener (új View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo); }); }}
A projekt tesztelése
Most, hogy elkészítette a projektet, ideje kipróbálni és megnézni, hogy valóban hozzáadja-e ujjlenyomat-hitelesítést alkalmazásához!
A projekt futtatásához szükség van egy fizikai okostelefonra vagy táblagépre, amelyen az Android Pie működik, vagy olyan Android virtuális eszközre (AVD), amely az Android P vagy újabb verzióját használja.
Legalább egy ujjlenyomatot regisztrálnia kell a készüléken. Ha fizikai Android-eszközt használ, akkor:
- Biztosítsa a lezárási képernyőt PIN-kóddal, jelszóval vagy mintával, ha még nem tette meg (lépjen a „Beállítások> Képernyő lezárása és biztonság> Képernyőzár típusa> Minta / Pin / Jelszó” elemre, majd kövesse a képernyőn megjelenő utasításokat).
- Indítsa el az eszköz „Beállítások” alkalmazását.
- Válassza a „Képernyő lezárása és biztonság” elemet.
- Válassza az „Ujjlenyomat-olvasó” lehetőséget.
- Kövesse az utasításokat egy vagy több ujjlenyomat regisztrálásához.
Az Android virtuális eszközökön nincs fizikai érintőérzékelő, ezért szimulálnia kell egy érintési eseményt:
- Indítsa el az AVD-t, ha még nem tette meg.
- Az AVD mellett egy gombcsíkot fog látni. Keresse meg a három ponttal ellátott „Több” gombot (ahol a kurzor a következő képernyőképen van elhelyezve), és kattintson rá. Ez megnyitja a „kiterjesztett vezérlők” ablakot.
- A kiterjesztett vezérlők ablakban válassza az „Ujjlenyomat” lehetőséget. Ezzel megnyílik a vezérlőkészlet, ahol különféle érintési eseményeket emulálhat.
- Nyissa meg a legördülő menüt, és válassza az ujjlenyomatot, amelyet regisztrálni szeretne ezen az eszközön; Az „1. ujj” -t használom.
- Most kapcsoljuk át a figyelmünket az emulált eszközre. Indítsa el az AVD „Beállítások” alkalmazását, és válassza a „Biztonság és hely” lehetőséget.
- Ha még nem állította be a PIN-kódot, jelszót vagy mintát, válassza a „Képernyőzár” lehetőséget, és kövesse a képernyőn megjelenő utasításokat a lezárási képernyő rögzítéséhez, majd keresse meg a fő „Beállítások> Biztonság és hely” képernyőt.
- Válassza az „Ujjlenyomat”, majd az „Ujjlenyomat hozzáadása” lehetőséget.
- Most felkérjük, hogy nyomja meg az ujját az érintőérzékelőhöz. Ehelyett továbbra is kattintson az „Érintse meg az érzékelőt” gombra, amíg meg nem jelenik a „Ujjlenyomat hozzáadva” felirat.
- Kattintson a „Kész” gombra.
- Ha további ujjlenyomatokat kíván regisztrálni, akkor öblítse le és ismételje meg a fenti lépéseket.
Ha legalább egy ujjlenyomatot regisztrált, készen áll arra, hogy tesztelje az alkalmazását. Meg fogom tesztelni, hogy az alkalmazás miként kezeli a három különböző forgatókönyvet:
- A felhasználó regisztrált ujjlenyomat segítségével próbálja hitelesíteni.
- A felhasználó megkísérel hitelesíteni egy olyan ujjlenyomat segítségével, amelyet még nem regisztráltak ezen az eszközön.
- A felhasználó regisztrálatlan ujjlenyomatokkal próbál hitelesíteni többször és gyorsan egymás után.
Próbáljuk meg hitelesíteni az eszközünkön éppen regisztrált ujjlenyomat segítségével:
- Ne felejtse el megtekinteni az Android Studio Logcat Monitor alkalmazását, mivel itt jelennek meg az alkalmazás különféle alkalmazásai.
- Telepítse az alkalmazást a teszt eszközre.
- Koppintson az alkalmazás „Ujjlenyomat-hitelesítés” gombjára. Megjelenik az ujjlenyomat-hitelesítési párbeszédpanel.
- Ha fizikai eszközt használ, akkor nyomja meg hosszan az ujjhegyét az eszköz érintőérzékelőjéhez. Ha AVD-t használ, akkor az érintéses esemény szimulálásához használja az „Érintse meg az érzékelőt” gombot.
- Ellenőrizze a Logcat figyelőt. Ha a hitelesítés sikeres volt, akkor a következőt kell látnia: “Az ujjlenyomat sikeresen felismert”
Ezután lássuk, mi történik, ha megkíséreljük hitelesíteni egy olyan ujjlenyomat segítségével, amelyet még nem regisztráltak ezen az eszközön:
- Érintse meg újra az alkalmazás „Ujjlenyomat-hitelesítés” gombot.
- Ha AVD-t használ, akkor a „kiterjesztett vezérlők” ablakban válassza ki az ujjlenyomatot nem regisztrálva ezen az eszközön; A „Finger 2” -t használom. Kattintson egy kattintással az „Érintse meg az érzékelőt” gombra.
- Ha fizikai Android okostelefont vagy táblagépet használ, nyomja meg és tartsa ujját az eszköz érintőérzékelőjével szemben - ügyeljen arra, hogy olyan ujjat használ, amelyet még nem regisztrált az eszközön!
- Ellenőrizze az Android Studio Logcat-jét, ez most egy „Ujjlenyomatot nem ismer fel” feliratot jelenít meg.
Mint már említettük, a Biometrikus Prompt API automatikusan kezeli a túlzott sikertelen hitelesítési kísérleteket. Ennek a funkciónak a tesztelése:
- Koppintson az alkalmazás „Ujjlenyomat-hitelesítés” gombjára.
- Próbálja meg hitelesíteni többször egymás után, regisztrálatlan ujjlenyomat segítségével.
- Néhány kísérlet után a párbeszédpanel automatikusan bezáródik. Ellenőrizze az Android Studio Logcat-jét, és a következőt kell látnia: „Helyrehozhatatlan hiba történt.”
A teljes alkalmazást letöltheti a GitHubból.
Csomagolás
Ebben a cikkben az Android Pie új Biometrikus Prompt API-ját fedeztük fel, amely lehetővé teszi az ujjlenyomat-hitelesítés hozzáadását az alkalmazásához. Gondolod, hogy a BiometricPrompt az Android korábbi ujjlenyomat-hitelesítési módszereinek javulása? Tudassa velünk az alábbi megjegyzésekben!