Προσθέστε τον έλεγχο ταυτότητας δακτυλικών αποτυπωμάτων στην εφαρμογή σας, χρησιμοποιώντας το BiometricPrompt

Συγγραφέας: Lewis Jackson
Ημερομηνία Δημιουργίας: 13 Ενδέχεται 2021
Ημερομηνία Ενημέρωσης: 1 Ιούλιος 2024
Anonim
Προσθέστε τον έλεγχο ταυτότητας δακτυλικών αποτυπωμάτων στην εφαρμογή σας, χρησιμοποιώντας το BiometricPrompt - Εφαρμογές
Προσθέστε τον έλεγχο ταυτότητας δακτυλικών αποτυπωμάτων στην εφαρμογή σας, χρησιμοποιώντας το BiometricPrompt - Εφαρμογές

Περιεχόμενο


Ας χρησιμοποιήσουμε το API BiometricPrompt για να δημιουργήσουμε μια εφαρμογή που θα επιτρέψει στο χρήστη να επιβεβαιώσει την ταυτότητά του χρησιμοποιώντας δακτυλικό αποτύπωμα.

Ανοίξτε το Android Studio και δημιουργήστε ένα νέο έργο, χρησιμοποιώντας το πρότυπο "Empty Activity". Όταν σας ζητηθεί, ρυθμίστε το ελάχιστο SDK του έργου σας σε 28 ή μεγαλύτερο, καθώς αυτό θα εμποδίσει την εφαρμογή σας να εγκατασταθεί σε οτιδήποτε νωρίτερα από το Android Pie.

Εάν θέλετε να καταστήσετε την εφαρμογή σας πιο προσιτή σε ένα ευρύτερο φάσμα συσκευών Android, τότε θα πρέπει να ελέγξετε σε ποια έκδοση του Android είναι εγκατεστημένη η εφαρμογή σας και, στη συνέχεια, να χειριστείτε διαφορετικά τον βιομετρικό έλεγχο ταυτότητας, ανάλογα με το επίπεδο API της συσκευής.

Προσθέστε τη βιομετρική βιβλιοθήκη

Για να ξεκινήσετε, ανοίξτε το αρχείο build.grable σε επίπεδο ενότητας και προσθέστε την πιο πρόσφατη έκδοση της βιβλιοθήκης βιομετρίας ως εξάρτηση έργου:


εξαρτήσεις {implementation androidx.biometric: biometric: 1.0.0-alpha03

Προσθέστε την άδεια USE_BIOMETRIC

Το API BiometricPrompt σάς επιτρέπει να αξιοποιήσετε όλες τις διαφορετικές μεθόδους ελέγχου βιομετρικών στοιχείων που υποστηρίζει η συσκευή, μέσω ενός μόνο δικαιώματος.

Ανοίξτε το Manifest του έργου σας και προσθέστε την άδεια "USE_BIOMETRIC":

Δημιουργήστε τη διάταξη της εφαρμογής σας

Στη συνέχεια, ας δημιουργήσουμε τη διάταξη της εφαρμογής μας. Πάω να προσθέσω ένα μόνο κουμπί το οποίο, όταν πατηθεί, θα ξεκινήσει το διάλογο επαλήθευσης δακτυλικών αποτυπωμάτων:

Ανοίξτε το αρχείο strings.xml του έργου σας και προσθέστε τον πόρο συμβολοσειράς "auth":


BiometricPromptSample Πιστοποίηση με δακτυλικό αποτύπωμα

Επαλήθευση της ταυτότητας του χρήστη

Τώρα, ας δούμε πώς θα πιστοποιούσατε την ταυτότητα του χρήστη, χρησιμοποιώντας το BiometricPrompt.

Δημιουργήστε μια βιομετρική στιγμιαία παρουσία

Η κλάση BiometricPrompt περιλαμβάνει μια συντροφική κλάση Builder (), την οποία μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε μια παράμετρο BiometricPrompt και να ξεκινήσετε τον έλεγχο ταυτότητας:

τελικό BiometricPrompt.PromptInfo promptInfo = νέο BiometricPrompt.PromptInfo.Builder ()

Όταν δημιουργείτε την εμφάνισή σας BiometricPrompt, θα πρέπει να ορίσετε το κείμενο που θα εμφανιστεί στο παράθυρο διαλόγου ελέγχου ταυτότητας και να προσαρμόσετε το "αρνητικό κουμπί", που είναι το κουμπί που επιτρέπει στο χρήστη να ακυρώσει τον έλεγχο ταυτότητας.

Για να διαμορφώσετε το παράθυρο διαλόγου ελέγχου ταυτότητας, θα πρέπει να δώσετε τα εξής:

  • setTitle. Ο τίτλος της προτροπής ελέγχου ταυτότητας δακτυλικών αποτυπωμάτων. (Απαιτείται)
  • setSubtitle. Ο υπότιτλος της ερώτησης ελέγχου ταυτότητας δακτυλικών αποτυπωμάτων. (Προαιρετικός)
  • setDescription. Μια πρόσθετη περιγραφή που θα εμφανίζεται στο παράθυρο διαλόγου ελέγχου ταυτότητας. (Προαιρετικός)
  • setNegativeButton (κείμενο, εκτελεστής, ακροατής). Αυτή είναι η ετικέτα του αρνητικού κουμπιού, για παράδειγμα "Ακύρωση" ή "Έξοδος". Κατά τη διαμόρφωση του αρνητικού κουμπιού, θα χρειαστεί επίσης να δώσετε ένα στιγμιότυπο Executor και ένα OnClickListener έτσι ώστε ο χρήστης να μπορεί να απορρίψει το παράθυρο διαλόγου ελέγχου ταυτότητας.

Κατά τη στιγμή της εγγραφής, δεν ήταν δυνατό να προσαρμόσετε το εικονίδιο ή το σφάλμα που χρησιμοποιείται στο παράθυρο διαλόγου ελέγχου ταυτότητας.

Τέλος, θα χρειαστεί να καλέσετε build (). Αυτό μας δίνει τα εξής:

τελικό BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () .setTitle ("Το κείμενο του τίτλου πηγαίνει εδώ") .setSubtitle ("Υπότιτλος πηγαίνει εδώ") .setDescription ("Αυτή είναι η περιγραφή") .setNegativeButtonText .χτίζω();

Χειριστείτε τις επανακλήσεις επανάκλησης ταυτότητας

Η παράμετρος BiometricPrompt έχει εκχωρηθεί ένα σύνολο μεθόδων επανάκλησης ταυτότητας που θα ειδοποιήσει την εφαρμογή σας σχετικά με τα αποτελέσματα της διαδικασίας επαλήθευσης ταυτότητας.

Θα πρέπει να ολοκληρώσετε όλες αυτές τις επανάκλησεις σε μια παράμετρο κλάσης BiometricPrompt.AuthenticationCallback:

τελικό BiometricPrompt myBiometricPrompt = νέο βιομετρικό προφίλ (δραστηριότητα, νέοςExecutor, νέο BiometricPrompt.AuthenticationCallback () {

Το επόμενο βήμα είναι η εφαρμογή κάποιων ή όλων των ακόλουθων μεθόδων επανάκλησης:

1. onAuthenticationUucceeded ()

Αυτή η μέθοδος ονομάζεται όταν το αποτύπωμα αντιστοιχεί επιτυχώς σε ένα από τα δακτυλικά αποτυπώματα που έχουν καταχωρηθεί στη συσκευή. Σε αυτό το σενάριο, ένα αντικείμενο AuthenticationResult μεταβιβάζεται στην επαλήθευση onAuthenticationSucceeded και η εφαρμογή σας θα εκτελέσει μια εργασία ως απόκριση σε αυτόν τον επιτυχημένο έλεγχο ταυτότητας.

Για να αποφύγουμε τα πράγματα απλά, η εφαρμογή μας θα ανταποκριθεί εκτυπώνοντας ένα στο Logcat του Android Studio:

@Override δημόσιο κενό onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult αποτέλεσμα) {super.onAuthenticationSucceeded (αποτέλεσμα)? Log.d (TAG, "αναγνωρίστηκε επιτυχώς το δακτυλικό αποτύπωμα"); }}

2. onAuthenticationFailed ()

Αυτή η μέθοδος ενεργοποιείται όταν η σάρωση ολοκληρωθεί με επιτυχία, αλλά το δακτυλικό αποτύπωμα δεν αντιστοιχεί σε καμία από τις εκτυπώσεις που έχουν καταχωρηθεί στη συσκευή. Και πάλι, η εφαρμογή μας θα ανταποκριθεί σε αυτό το γεγονός ελέγχου ταυτότητας, εκτυπώνοντας ένα στο Logcat:

@Override δημόσιο κενό onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Το δακτυλικό αποτύπωμα δεν αναγνωρίστηκε")? }}

3. onAuthenticationError

Αυτή η επανάκληση ενεργοποιείται κάθε φορά που εμφανίζεται ένα μη ανακτήσιμο σφάλμα και ο έλεγχος ταυτότητας δεν μπορεί να ολοκληρωθεί με επιτυχία. Για παράδειγμα, ίσως ο αισθητήρας αφής της συσκευής καλύπτεται από βρωμιά ή γράσο, ο χρήστης δεν έχει καταχωρίσει δακτυλικά αποτυπώματα σε αυτή τη συσκευή ή δεν υπάρχει αρκετή μνήμη για να εκτελέσει πλήρη βιομετρική σάρωση.

Εδώ είναι ο κώδικας που θα χρησιμοποιήσω στην εφαρμογή μου:

@Override δημόσιο κενό onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); αν (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} αλλιώς {Log.d (TAG, "Παρουσιάστηκε ένα ανεπανόρθωτο σφάλμα"). }}

4. onAuthenticationHelp

Η μέθοδος onAuthenticationHelp ονομάζεται κάθε φορά που εμφανίζεται ένα μη θανατηφόρο σφάλμα και περιλαμβάνει έναν κωδικό βοήθειας και ένα που παρέχουν περισσότερες πληροφορίες σχετικά με το σφάλμα.

Για να διατηρήσουμε τον κωδικό μας απλό, δεν θα χρησιμοποιήσω τοAuthenticationHelp στην εφαρμογή μας, αλλά μια εφαρμογή θα φαινόταν κάπως έτσι:

@Override δημόσιο κενό onAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString)? biometricCallback.onAuthenticationHelp (helpCode, helpString); }}

Τέλος, πρέπει να καλέσουμε τη μέθοδο authenticate () της εμφάνισης BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Εφαρμογή της βιομετρικής πιστοποίησης του Android Pie

Αφού ολοκληρώσετε όλα τα παραπάνω βήματα, το MainActivity σας θα πρέπει να φαίνεται ως εξής:

εισαγωγή καιroid.appcompat.app.AppCompatActivity; εισαγωγή android.biometric.BiometricPrompt; εισαγωγή android.os.Bundle; εισαγωγή java.util.concurrent.Executor; εισαγωγή java.util.concurrent.Executors; εισαγωγή καιroid.fragment.app.FragmentActivity; εισαγωγή καιroid.util.log; εισαγωγή android.view.View; εισαγωγή android.annotation.NonNull; η δημόσια κλάση MainActivity επεκτείνει την AppCompatActivity {ιδιωτική στατική τελική ακολουθία TAG = MainActivity.class.getName (); @Override προστατεύεται void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Δημιουργία πισίνας νήματος με ένα μόνο νήμα // Executor newExecutor = Executors.newSingleThreadExecutor (); Δραστηριότητα FragmentActivity = αυτό; // Εκκίνηση ακρόασης για συμβάντα ελέγχου ταυτότητας // τελικό BiometricPrompt myBiometricPrompt = new BiometricPrompt (δραστηριότητα, newExecutor, new BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError ονομάζεται όταν εμφανιστεί ένα θανατηφόρο σφάλμα // public void onAuthenticationError (int errorCode, @NonNull (ErrorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} αλλιώς {// Εκτυπώστε ένα στο Logcat // Log.d (TAG, "Παρουσιάστηκε ένα ανεπανόρθωτο σφάλμα")}}} // onAuthenticationSucceeded ονομάζεται όταν ένα αποτύπωμα αντιστοιχεί επιτυχώς // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult αποτέλεσμα) {super.onAuthenticationSucceeded (αποτέλεσμα); // Εκτύπωση a σε Logcat // Log.d (TAG, "Fingerprint αναγνωρισμένο με επιτυχία "),} // onAuthenticationFailed ονομάζεται όταν το δακτυλικό αποτύπωμα δεν ταιριάζει με // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Εκτύπωση σε αρχείο καταγραφής cat // Log.d (TAG, "Το δακτυλικό αποτύπωμα δεν αναγνωρίστηκε")? }}); // Δημιουργήστε το BiometricPrompt // τελικό BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // Προσθέστε κάποιο κείμενο στο παράθυρο διαλόγου // .setTitle ("Το κείμενο του τίτλου πηγαίνει εδώ") .setSubtitle ("Ο υπότιτλος πηγαίνει εδώ" ) .setDescription ("Αυτή είναι η περιγραφή") .setNegativeButtonText ("Ακύρωση") // Δημιουργία διαλόγου // .build (); // Προσθέστε ένα onClickListener στο κουμπί "Authentication" της εφαρμογής // findViewById (R.id.launchAuthentication) .setOnClickListener (new View.OnClickListener () {@Override public void onClick (Προβολή v) {myBiometricPrompt.authenticate (promptInfo) }); }}

Δοκιμάστε το έργο σας

Τώρα έχετε δημιουργήσει το έργο σας, ήρθε η ώρα να το δοκιμάσετε και να δούμε αν πραγματικά προσθέτει έλεγχο ταυτότητας δακτυλικών αποτυπωμάτων στην εφαρμογή σας!

Για να εκτελέσετε αυτό το έργο, θα χρειαστείτε είτε ένα φυσικό smartphone είτε ένα tablet που χρησιμοποιεί το Android Pie ή μια εικονική συσκευή Android (AVD) που χρησιμοποιεί την προεπισκόπηση Android P ή υψηλότερη.

Θα πρέπει επίσης να καταχωρίσετε τουλάχιστον ένα δακτυλικό αποτύπωμα στη συσκευή σας. Αν χρησιμοποιείτε μια φυσική συσκευή Android, τότε:

  • Ασφαλίστε την οθόνη κλειδώματος με PIN, κωδικό πρόσβασης ή μοτίβο, εάν δεν το έχετε ήδη (μεταβείτε στην ενότητα "Ρυθμίσεις> Κλείδωμα οθόνης και ασφάλεια> Τύπος κλειδώματος οθόνης> Μοτίβο / Καρφίτσα / Κωδικός πρόσβασης") και, στη συνέχεια, ακολουθήστε τις οδηγίες στην οθόνη.
  • Εκκινήστε την εφαρμογή "Ρυθμίσεις" της συσκευής σας.
  • Επιλέξτε "Κλείδωμα οθόνης και ασφάλεια."
  • Επιλέξτε "Scanner δακτυλικών αποτυπωμάτων".
  • Ακολουθήστε τις οδηγίες για να καταχωρίσετε ένα ή περισσότερα δακτυλικά αποτυπώματα.

Οι εικονικές συσκευές Android δεν διαθέτουν αισθητήρα φυσικής επαφής, οπότε θα πρέπει να προσομοιώνετε ένα συμβάν αφής:

  • Ξεκινήστε το AVD σας, αν δεν το έχετε ήδη κάνει.
  • Παράλληλα με το AVD, θα δείτε μια λωρίδα κουμπιών. Εντοπίστε το κουμπί "Περισσότερα" (όπου βρίσκεται ο δρομέας στο επόμενο στιγμιότυπο) και κάντε κλικ σε αυτό. Αυτό εκκινεί το παράθυρο "Εκτεταμένα στοιχεία ελέγχου".
  • Στο παράθυρο Εκτεταμένες ρυθμίσεις, επιλέξτε "Αποτύπωμα". Ανοίγει ένα σύνολο στοιχείων ελέγχου, όπου μπορείτε να μιμηθούν διάφορα συμβάντα αφής.
  • Ανοίξτε το αναπτυσσόμενο μενού και επιλέξτε το δακτυλικό αποτύπωμα που θέλετε να καταχωρίσετε σε αυτήν τη συσκευή. Χρησιμοποιώ το "δάχτυλο 1."
  • Τώρα, ας στραφούμε προς την προσομοιωμένη συσκευή. Εκκινήστε την εφαρμογή "Ρυθμίσεις" του AVD και επιλέξτε "Ασφάλεια & τοποθεσία".
  • Εάν δεν έχετε ήδη ρυθμίσει έναν κωδικό PIN, έναν κωδικό πρόσβασης ή ένα μοτίβο, επιλέξτε "Κλείδωμα οθόνης" και ακολουθήστε τις οδηγίες στην οθόνη για να ασφαλίσετε την κλειδαριά οθόνης και, στη συνέχεια, μεταβείτε στην κύρια οθόνη "Ρυθμίσεις> Ασφάλεια & τοποθεσία".
  • Επιλέξτε "Αποτύπωμα" και στη συνέχεια "Προσθήκη δακτυλικών αποτυπωμάτων".
  • Θα σας ζητηθεί τώρα να πατήσετε το δάχτυλό σας στον αισθητήρα αφής. Αντίθετα, συνεχίστε να πατάτε "Αγγίξτε τον αισθητήρα" μέχρι να δείτε ένα "Δακτυλίδι αποτύπωσης προστέθηκε".

  • Κάντε κλικ στην επιλογή "Τέλος".
  • Εάν θέλετε να καταχωρήσετε πρόσθετα δακτυλικά αποτυπώματα, ξεπλύνετε και επαναλάβετε τα παραπάνω βήματα.

Μόλις καταχωρίσετε τουλάχιστον ένα δακτυλικό αποτύπωμα, είστε έτοιμοι να βάλετε την αίτησή σας στη δοκιμή. Θα δοκιμάσω πώς η εφαρμογή μας χειρίζεται τρία διαφορετικά σενάρια:

  • Ο χρήστης προσπαθεί να πιστοποιήσει την ταυτότητά του χρησιμοποιώντας ένα καταχωρημένο δακτυλικό αποτύπωμα.
  • Ο χρήστης προσπαθεί να πιστοποιήσει την ταυτότητά του χρησιμοποιώντας δακτυλικό αποτύπωμα που δεν έχει καταχωριστεί σε αυτή τη συσκευή.
  • Ο χρήστης προσπαθεί να επαληθεύσει τη χρήση μη καταχωρημένων δακτυλικών αποτυπωμάτων, πολλές φορές και με γρήγορη διαδοχή.

Ας προσπαθήσουμε να επαληθεύσουμε τη χρήση του δακτυλικού αποτυπώματος που μόλις καταχωρίσαμε στη συσκευή μας:

  • Βεβαιωθείτε ότι βλέπετε το Logcat Monitor του Android Studio, καθώς θα εμφανίζονται τα διάφορα s της εφαρμογής σας.

  • Εγκαταστήστε την εφαρμογή σας στη συσκευή δοκιμής.
  • Πατήστε το κουμπί "Πιστοποίηση με δακτυλικό αποτύπωμα" της εφαρμογής σας. Θα εμφανιστεί το παράθυρο διαλόγου επαλήθευσης δακτυλικών αποτυπωμάτων.
  • Εάν χρησιμοποιείτε μια φυσική συσκευή, πατήστε και κρατήστε πατημένο το δάκτυλό σας προς τον αισθητήρα αφής της συσκευής. Εάν χρησιμοποιείτε ένα AVD, χρησιμοποιήστε το κουμπί "Αγγίξτε το αισθητήρα" για να προσομοιώσετε ένα συμβάν αφής.
  • Ελέγξτε την οθόνη Logcat. Εάν ο έλεγχος ταυτότητας ήταν επιτυχής, τότε θα πρέπει να δείτε τα εξής: "Το αναγνωρισμένο με επιτυχία δακτυλικό αποτύπωμα"

Στη συνέχεια, ας δούμε τι θα συμβεί εάν προσπαθήσουμε να επαληθεύσουμε τη χρήση δακτυλικών αποτυπωμάτων που δεν έχουν καταχωρηθεί στη συγκεκριμένη συσκευή:

  • Πατήστε ξανά το κουμπί "Πιστοποίηση με δακτυλικό αποτύπωμα" της εφαρμογής.
  • Εάν χρησιμοποιείτε ένα AVD, χρησιμοποιήστε το παράθυρο "Extended Controls" για να επιλέξετε ένα δακτυλικό αποτύπωμα δεν είναι καταχωρηθεί σε αυτήν τη συσκευή. Χρησιμοποιώ το δάχτυλο 2. Δώστε ένα κλικ στο κουμπί "Αγγίξτε το αισθητήρα".
  • Εάν χρησιμοποιείτε ένα φυσικό Android smartphone ή tablet, πατήστε και κρατήστε πατημένο το δάκτυλό σας από τον αισθητήρα αφής της συσκευής - βεβαιωθείτε ότι χρησιμοποιείτε ένα δάχτυλο που δεν έχει καταχωρηθεί σε αυτή τη συσκευή!
  • Ελέγξτε το Logcat του Android Studio, θα πρέπει τώρα να εμφανίζει ένα "Δακτυλικό αποτύπωμα δεν αναγνωρίζεται".

Όπως ήδη αναφέρθηκε, το API BiometricPrompt χειρίζεται αυτόματα τις υπερβολικές αποτυχημένες προσπάθειες ελέγχου ταυτότητας. Για να δοκιμάσετε αυτή τη λειτουργία:

  • Πατήστε το κουμπί "Πιστοποίηση με δακτυλικό αποτύπωμα" της εφαρμογής σας.
  • Προσπαθήστε να επαληθεύσετε την ταυτότητά σας πολλές φορές με γρήγορη διαδοχή, χρησιμοποιώντας ένα μη καταχωρημένο δακτυλικό αποτύπωμα.
  • Μετά από μερικές προσπάθειες, το παράθυρο διαλόγου πρέπει να κλείσει αυτόματα. Ελέγξτε το Logcat του Android Studio και θα πρέπει να δείτε τα ακόλουθα: "Παρουσιάστηκε ένα σφάλμα ανεπανόρθωτο".

Μπορείτε να κατεβάσετε την πλήρη εφαρμογή από το GitHub.

Τυλίγοντας

Σε αυτό το άρθρο, διερευνήσαμε το νέο BiometricPrompt API του Android Pie, το οποίο σας επιτρέπει να προσθέσετε εύκολα την αναγνώριση δακτυλικών αποτυπωμάτων στην εφαρμογή σας. Πιστεύετε ότι το BiometricPrompt είναι μια βελτίωση στις προηγούμενες μεθόδους ελέγχου ταυτότητας δακτυλικών αποτυπωμάτων του Android; Ενημερώστε μας στα σχόλια παρακάτω!

Το kype, το WhatApp και άλλες υπηρεσίες ανταλλαγής μηνυμάτων και κλήσεων μέσω διαδικτύου έχουν κάνει την επαφή με ανθρώπους σε όλο τον κόσμο δωρεάν ευκολότερα από ποτέ. Ορισμένες φορές οι διεθνείς κλή...

Το Playtation ήταν ένα από τα πιο εικονικά συστήματα τυχερών παιχνιδιών που κυκλοφόρησαν ποτέ και με αυτό ήρθε ένα πλήθος από θρυλικά παιχνίδια. Κυριαρχούσε στην πέμπτη γενιά των κονσολών παιχνιδιών ...

Άρθρα Για Εσάς