Fügen Sie Ihrer App mithilfe von BiometricPrompt die Authentifizierung per Fingerabdruck hinzu

Autor: Lewis Jackson
Erstelldatum: 13 Kann 2021
Aktualisierungsdatum: 1 Juli 2024
Anonim
Fügen Sie Ihrer App mithilfe von BiometricPrompt die Authentifizierung per Fingerabdruck hinzu - Apps
Fügen Sie Ihrer App mithilfe von BiometricPrompt die Authentifizierung per Fingerabdruck hinzu - Apps

Inhalt


Verwenden Sie die BiometricPrompt-API, um eine App zu erstellen, mit der der Benutzer seine Identität mithilfe eines Fingerabdrucks bestätigen kann.

Öffnen Sie Android Studio und erstellen Sie ein neues Projekt mithilfe der Vorlage "Leere Aktivität". Wenn Sie dazu aufgefordert werden, legen Sie das SDK Ihres Projekts auf mindestens 28 fest, da dies verhindert, dass Ihre Anwendung auf einer früheren Version als Android Pie installiert wird.

Wenn Sie Ihre App für eine größere Anzahl von Android-Geräten verfügbar machen möchten, müssen Sie überprüfen, auf welcher Android-Version Ihre Anwendung derzeit installiert ist, und dann die biometrische Authentifizierung je nach API-Ebene des Geräts unterschiedlich handhaben.

Fügen Sie die biometrische Bibliothek hinzu

Öffnen Sie zunächst die build.gradle-Datei auf Modulebene und fügen Sie die neueste Version der Biometric-Bibliothek als Projektabhängigkeit hinzu:


Abhängigkeiten {Implementierung androidx.biometric: biometric: 1.0.0-alpha03

Fügen Sie die USE_BIOMETRIC-Berechtigung hinzu

Mit der BiometricPrompt-API können Sie alle vom Gerät unterstützten biometrischen Authentifizierungsmethoden über eine einzige Berechtigung abrufen.

Öffnen Sie das Manifest Ihres Projekts und fügen Sie die Berechtigung "USE_BIOMETRIC" hinzu:

Erstellen Sie das Layout Ihrer Anwendung

Als Nächstes erstellen wir das Layout unserer Anwendung. Ich werde eine einzelne Schaltfläche hinzufügen, die beim Tippen den Dialog zur Authentifizierung von Fingerabdrücken öffnet:

Öffnen Sie die Datei "strings.xml" Ihres Projekts und fügen Sie die Zeichenfolgenressource "auth" hinzu:


BiometricPromptSample Mit Fingerabdruck authentifizieren

Authentifizierung der Benutzeridentität

Schauen wir uns nun an, wie Sie die Identität des Benutzers mithilfe von BiometricPrompt authentifizieren.

Erstellen Sie eine biometrische Eingabeaufforderungsinstanz

Die BiometricPrompt-Klasse enthält eine Companion Builder () -Klasse, mit der Sie eine BiometricPrompt-Instanz erstellen und die Authentifizierung initiieren können:

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

Beim Erstellen Ihrer BiometricPrompt-Instanz müssen Sie den Text definieren, der im Authentifizierungsdialogfeld angezeigt werden soll, und die Schaltfläche "Negativ" anpassen, mit der der Benutzer die Authentifizierung abbrechen kann.

Um das Authentifizierungsdialogfeld zu konfigurieren, müssen Sie Folgendes angeben:

  • setTitle. Der Titel der Eingabeaufforderung zur Authentifizierung per Fingerabdruck. (Erforderlich)
  • setSubtitle. Der Untertitel der Eingabeaufforderung zur Authentifizierung per Fingerabdruck. (Wahlweise)
  • setDescription. Eine zusätzliche Beschreibung, die in Ihrem Authentifizierungsdialogfeld angezeigt wird. (Wahlweise)
  • setNegativeButton (Text, Executor, Listener). Dies ist die Beschriftung der negativen Schaltfläche, z. B. "Abbrechen" oder "Beenden". Wenn Sie die negative Schaltfläche konfigurieren, müssen Sie auch eine Executor-Instanz und einen OnClickListener bereitstellen, damit der Benutzer den Authentifizierungsdialog schließen kann.

Zum Zeitpunkt des Schreibens war es nicht möglich, das Symbol oder den im Authentifizierungsdialog verwendeten Fehler anzupassen.

Schließlich müssen Sie build () aufrufen. Dies gibt uns Folgendes:

final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Hier geht der Titeltext") .setSubtitle ("Hier geht der Untertitel") .setDescription ("Dies ist die Beschreibung") .setNegativeButtonText ("Cancel") .bauen();

Behandeln Sie die Authentifizierungsrückrufe

Der BiometricPrompt-Instanz ist eine Reihe von Authentifizierungsrückrufmethoden zugewiesen, mit denen Ihre App über die Ergebnisse des Authentifizierungsprozesses benachrichtigt wird.

Sie müssen alle diese Rückrufe in eine Instanz der BiometricPrompt.AuthenticationCallback-Klasse einschließen:

final BiometricPrompt myBiometricPrompt = new BiometricPrompt (Aktivität, newExecutor, new BiometricPrompt.AuthenticationCallback () {

Im nächsten Schritt werden einige oder alle der folgenden Rückrufmethoden implementiert:

1. onAuthenticationSucceeded ()

Diese Methode wird aufgerufen, wenn der Fingerabdruck erfolgreich mit einem der auf dem Gerät registrierten Fingerabdrücke abgeglichen wurde. In diesem Szenario wird ein AuthenticationResult-Objekt an den onAuthenticationSucceeded-Rückruf übergeben, und Ihre App führt als Antwort auf diese erfolgreiche Authentifizierung eine Aufgabe aus.

Um die Dinge einfacher zu gestalten, druckt unsere App ein auf Logcat von Android Studio:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult-Ergebnis) {super.onAuthenticationSucceeded (Ergebnis); Log.d (TAG, "Fingerabdruck erfolgreich erkannt"); }

2. onAuthenticationFailed ()

Diese Methode wird ausgelöst, wenn der Scan erfolgreich abgeschlossen wurde, der Fingerabdruck jedoch keinem der auf dem Gerät registrierten Abdrücke entspricht. Auch hier reagiert unsere App auf dieses Authentifizierungsereignis, indem sie ein an Logcat sendet:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Fingerabdruck nicht erkannt"); }

3. onAuthenticationError

Dieser Rückruf wird ausgelöst, wenn ein nicht behebbarer Fehler auftritt und die Authentifizierung nicht erfolgreich abgeschlossen werden kann. Möglicherweise ist der Berührungssensor des Geräts von Schmutz oder Fett bedeckt, der Benutzer hat keine Fingerabdrücke auf dem Gerät registriert oder es ist nicht genügend Speicher verfügbar, um einen vollständigen biometrischen Scan durchzuführen.

Hier ist der Code, den ich in meiner App verwende:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Ein nicht behebbarer Fehler ist aufgetreten"); }}

4. onAuthenticationHelp

Die onAuthenticationHelp-Methode wird immer dann aufgerufen, wenn ein nicht schwerwiegender Fehler auftritt. Sie enthält einen Hilfecode und eine, die weitere Informationen zu dem Fehler bereitstellen.

Um unseren Code übersichtlich zu halten, verwende ich in unserer App nicht onAuthenticationHelp, aber eine Implementierung sieht ungefähr so ​​aus:

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

Schließlich müssen wir die authenticate () -Methode der BiometricPrompt-Instanz aufrufen:

myBiometricPrompt.authenticate (promptInfo);

Implementierung der biometrischen Authentifizierung von Android Pie

Nachdem Sie alle oben genannten Schritte ausgeführt haben, sollte Ihre MainActivity folgendermaßen aussehen:

androidx.appcompat.app.AppCompatActivity importieren; androidx.biometric.BiometricPrompt importieren; android.os.Bundle importieren; import java.util.concurrent.Executor; import java.util.concurrent.Executors; androidx.fragment.app.FragmentActivity importieren; import android.util.Log; android.view.View importieren; import androidx.annotation.NonNull; Die öffentliche Klasse MainActivity erweitert AppCompatActivity {private static final String TAG = MainActivity.class.getName (); @Override protected void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Einen Thread-Pool mit einem einzelnen Thread erstellen // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity activity = this; // Beginne, auf Authentifizierungsereignisse zu warten. // final BiometricPrompt myBiometricPrompt = new BiometricPrompt (activity, newExecutor, new BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError wird aufgerufen, wenn ein schwerwiegender Fehler auftritt. // public void onAuthenticationError (int errorNon, @ CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Auf Logcat // Log.d (TAG, "Ein nicht behebbarer Fehler ist aufgetreten")} // onAuthenticationSucceeded wird aufgerufen, wenn ein Fingerabdruck erfolgreich abgeglichen wurde // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult-Ergebnis) {super.onAuthenticationSucceeded (Ergebnis); // Print a to Logcat // Log.d (TAG, "Fingerprint erfolgreich erkannt ");} // onAuthenticationFailed wird aufgerufen, wenn der Fingerabdruck nicht mit // @Override public void übereinstimmt onAuthenticationFailed () {super.onAuthenticationFailed (); // Print a to Log cat // Log.d (TAG, "Fingerprint nicht erkannt"); }}); // Erstellen Sie die BiometricPrompt-Instanz // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Fügen Sie dem Dialog Text hinzu // .setTitle ("Titeltext geht hierher") .setSubtitle ("Untertitel geht hierher") ) .setDescription ("Dies ist die Beschreibung") .setNegativeButtonText ("Cancel") // Build the dialog // .build (); // Weisen Sie der Schaltfläche "Authentifizierung" der App einen onClickListener zu. // findViewById (R.id.launchAuthentication) .setOnClickListener (new View.OnClickListener () {@Override public void onClick (View v) {myBiometricPrompt.authenticate (promptInfo)}; }); }}

Testen Sie Ihr Projekt

Nachdem Sie Ihr Projekt erstellt haben, ist es an der Zeit, es zu testen und zu prüfen, ob es Ihrer App tatsächlich eine Authentifizierung durch Fingerabdrücke hinzufügt.

Zum Ausführen dieses Projekts benötigen Sie entweder ein physisches Smartphone oder Tablet mit Android Pie oder ein virtuelles Android-Gerät (AVD) mit Android P-Vorschau oder höher.

Sie müssen außerdem mindestens einen Fingerabdruck auf Ihrem Gerät registrieren. Wenn Sie ein physisches Android-Gerät verwenden, gilt Folgendes:

  • Sichern Sie Ihren Sperrbildschirm mit einer PIN, einem Kennwort oder einem Muster, falls Sie dies noch nicht getan haben (indem Sie zu "Einstellungen> Bildschirm sperren und Sicherheit> Bildschirmsperrtyp> Muster / PIN / Kennwort" navigieren und dann den Anweisungen auf dem Bildschirm folgen).
  • Starten Sie die Anwendung "Einstellungen" Ihres Geräts.
  • Wählen Sie "Bildschirm sperren und Sicherheit".
  • Wählen Sie "Fingerabdruckscanner".
  • Befolgen Sie die Anweisungen, um einen oder mehrere Fingerabdrücke zu registrieren.

Virtuelle Android-Geräte haben keinen physischen Berührungssensor. Daher müssen Sie ein Berührungsereignis simulieren:

  • Starten Sie Ihre AVD, falls Sie dies noch nicht getan haben.
  • Neben der AVD sehen Sie eine Reihe von Schaltflächen. Suchen Sie die dreipunktige Schaltfläche „Mehr“ (in der folgenden Abbildung befindet sich der Cursor) und klicken Sie darauf. Dadurch wird das Fenster "Erweiterte Steuerelemente" geöffnet.
  • Wählen Sie im Fenster "Erweiterte Steuerelemente" die Option "Fingerabdruck". Dadurch wird eine Reihe von Steuerelementen geöffnet, mit denen Sie verschiedene Berührungsereignisse emulieren können.
  • Öffnen Sie das Dropdown-Menü und wählen Sie den Fingerabdruck aus, den Sie auf diesem Gerät registrieren möchten. Ich verwende "Finger 1".
  • Wenden wir uns nun dem emulierten Gerät zu. Starten Sie die AVD-Anwendung "Einstellungen" und wählen Sie "Sicherheit und Standort".
  • Wenn Sie noch keine PIN, ein Kennwort oder ein Muster eingerichtet haben, wählen Sie "Bildschirmsperre" und befolgen Sie die Anweisungen auf dem Bildschirm, um den Bildschirm zu sichern. Navigieren Sie dann zurück zum Hauptbildschirm "Einstellungen> Sicherheit und Standort".
  • Wählen Sie "Fingerabdruck" und anschließend "Fingerabdruck hinzufügen".
  • Sie werden nun aufgefordert, mit dem Finger auf den Berührungssensor zu drücken. Klicken Sie stattdessen so oft auf „Sensor berühren“, bis ein „Fingerabdruck hinzugefügt“ angezeigt wird.

  • Klicken Sie auf "Fertig".
  • Wenn Sie weitere Fingerabdrücke registrieren möchten, spülen Sie diese und wiederholen Sie die obigen Schritte.

Sobald Sie mindestens einen Fingerabdruck registriert haben, können Sie Ihre Anwendung testen. Ich werde testen, wie unsere Anwendung mit drei verschiedenen Szenarien umgeht:

  • Der Benutzer versucht, sich mit einem registrierten Fingerabdruck zu authentifizieren.
  • Der Benutzer versucht, sich mit einem Fingerabdruck zu authentifizieren, der nicht auf diesem Gerät registriert ist.
  • Der Benutzer versucht mehrmals und schnell hintereinander, sich mit nicht registrierten Fingerabdrücken zu authentifizieren.

Versuchen wir, uns mit dem Fingerabdruck zu authentifizieren, den wir gerade auf unserem Gerät registriert haben:

  • Stellen Sie sicher, dass Sie den Logcat-Monitor von Android Studio anzeigen. Hier werden die verschiedenen Anwendungen angezeigt.

  • Installieren Sie Ihre Anwendung auf dem Testgerät.
  • Tippen Sie auf die Schaltfläche "Mit Fingerabdruck authentifizieren" Ihrer Anwendung. Das Dialogfeld zur Authentifizierung von Fingerabdrücken wird angezeigt.
  • Wenn Sie ein physisches Gerät verwenden, halten Sie Ihre Fingerspitze gegen den Berührungssensor des Geräts. Wenn Sie eine AVD verwenden, verwenden Sie die Schaltfläche "Sensor berühren", um ein Berührungsereignis zu simulieren.
  • Überprüfen Sie den Logcat-Monitor. Wenn die Authentifizierung erfolgreich war, sollte Folgendes angezeigt werden: "Fingerabdruck erfolgreich erkannt"

Als nächstes sehen wir uns an, was passiert, wenn wir versuchen, uns mit einem Fingerabdruck zu authentifizieren, der auf diesem Gerät nicht registriert ist:

  • Tippen Sie erneut auf die Schaltfläche "Mit Fingerabdruck authentifizieren" der App.
  • Wenn Sie eine AVD verwenden, wählen Sie im Fenster "Erweiterte Steuerelemente" einen Fingerabdruck aus, der nicht auf diesem Gerät registriert; Ich verwende "Finger 2". Klicken Sie auf die Schaltfläche "Sensor berühren".
  • Wenn Sie ein physisches Android-Smartphone oder -Tablet verwenden, drücken und halten Sie Ihre Fingerspitze gegen den Berührungssensor des Geräts - stellen Sie sicher, dass Sie einen Finger verwenden, der nicht auf diesem Gerät registriert ist!
  • Überprüfen Sie Logcat von Android Studio. Es sollte nun ein "Fingerabdruck nicht erkannt" angezeigt werden.

Wie bereits erwähnt, verarbeitet die BiometricPrompt-API automatisch übermäßige fehlgeschlagene Authentifizierungsversuche. So testen Sie diese Funktionalität:

  • Tippen Sie auf die Schaltfläche "Mit Fingerabdruck authentifizieren" Ihrer App.
  • Versuchen Sie, sich mit einem nicht registrierten Fingerabdruck mehrere Male in schneller Folge zu authentifizieren.
  • Nach einigen Versuchen sollte das Dialogfeld automatisch geschlossen werden. Überprüfen Sie Logcat von Android Studio, und es sollte Folgendes angezeigt werden: "Es ist ein nicht behebbarer Fehler aufgetreten."

Sie können die vollständige Anwendung von GitHub herunterladen.

Einpacken

In diesem Artikel haben wir die neue BiometricPrompt-API von Android Pie untersucht, mit der Sie Ihrer App ganz einfach die Authentifizierung per Fingerabdruck hinzufügen können. Ist BiometricPrompt Ihrer Meinung nach eine Verbesserung gegenüber den früheren Authentifizierungsmethoden für Fingerabdrücke von Android? Lass es uns in den Kommentaren unten wissen!

martwatche machen viel paß und ind äußert nützlich, aber kaum in Mode.Vielleicht bereiten ie ich auf eine Nacht in der tadt vor, oder ie haben nur einen exquiiten Gechmackinn und u...

chnelle Aufladen it in heutigen Telefonen ein Mu. E hält unere Batterien durch antrengende Tage aufgefüllt. E gibt jedoch eine Vielzahl unterchiedlicher tandard von verchiedenen Unternehmen....

Heute Geöffnet