Tambahkan otentikasi sidik jari ke aplikasi Anda, menggunakan BiometricPrompt

Pengarang: Lewis Jackson
Tanggal Pembuatan: 13 Boleh 2021
Tanggal Pembaruan: 1 Juli 2024
Anonim
Biometric Fingerprint Authentication in android studio | How to add fingerprint in android studio
Video: Biometric Fingerprint Authentication in android studio | How to add fingerprint in android studio

Isi


Mari kita gunakan BiometricPrompt API untuk membuat aplikasi yang akan memungkinkan pengguna untuk mengkonfirmasi identitas mereka menggunakan sidik jari.

Buka Android Studio dan buat proyek baru, menggunakan templat "Empty Activity". Saat diminta, atur SDK minimum proyek Anda menjadi 28 atau lebih tinggi, karena ini akan mencegah aplikasi Anda diinstal pada sesuatu yang lebih awal dari Android Pie.

Jika Anda ingin membuat aplikasi Anda dapat diakses oleh perangkat Android yang lebih luas, maka Anda perlu memeriksa versi Android dari aplikasi Anda saat ini, dan kemudian menangani otentikasi biometrik secara berbeda, tergantung pada tingkat API perangkat.

Tambahkan perpustakaan Biometrik

Untuk memulai, buka file build.gradle tingkat modul Anda, dan tambahkan versi terbaru dari perpustakaan Biometrik sebagai ketergantungan proyek:

dependencies {implementasi androidx.biometric: biometric: 1.0.0-alpha03

Tambahkan izin USE_BIOMETRIC

API BiometricPrompt memungkinkan Anda memanfaatkan semua metode otentikasi biometrik berbeda yang didukung perangkat, melalui satu izin.


Buka Manifest proyek Anda, dan tambahkan izin "USE_BIOMETRIC":

Buat tata letak aplikasi Anda

Selanjutnya, mari kita buat tata letak aplikasi kita. Saya akan menambahkan satu tombol yang, ketika diketuk, akan meluncurkan dialog otentikasi sidik jari:

Buka file strings.xml proyek Anda, dan tambahkan sumber daya string "auth":

Contoh biometrik Otentikasi dengan sidik jari

Otentikasi identitas pengguna

Sekarang, mari kita lihat bagaimana Anda mengotentikasi identitas pengguna, menggunakan BiometricPrompt.


Buat contoh prompt biometrik

Kelas BiometricPrompt termasuk kelas Builder (), yang bisa Anda gunakan untuk membuat instance BiometricPrompt dan memulai otentikasi:

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

Saat membuat instance BiometricPrompt Anda, Anda harus menentukan teks yang akan muncul dalam dialog otentikasi, dan menyesuaikan "tombol negatif," yang merupakan tombol yang memungkinkan pengguna untuk membatalkan otentikasi.

Untuk mengonfigurasi dialog otentikasi, Anda harus memberikan yang berikut:

  • setTitle. Judul permintaan otentikasi sidik jari. (Wajib)
  • setSubtitle. Subtitle dari prompt otentikasi sidik jari. (Pilihan)
  • setDescription. Deskripsi tambahan yang akan ditampilkan dalam dialog autentikasi Anda. (Pilihan)
  • setNegativeButton (teks, pelaksana, pendengar). Ini adalah label tombol negatif, misalnya "Batalkan" atau "Keluar." Saat mengonfigurasi tombol negatif, Anda juga harus memberikan mesin virtual Executor dan OnClickListener sehingga pengguna dapat mengabaikan dialog otentikasi.

Pada saat penulisan, itu tidak mungkin untuk menyesuaikan ikon atau kesalahan yang digunakan dalam dialog otentikasi.

Akhirnya, Anda harus memanggil build (). Ini memberi kita yang berikut:

final BiometricPrompt.PromptInfo promptInfo = BiometricPrompt.PromptInfo.Builder () .setTitle baru ("Teks judul di sini") .setSubtitle ("Subtitle di sini") .setDescription ("Ini adalah deskripsi") .setNegativeButtonText (Batalkan ")" .membangun();

Menangani panggilan balik otentikasi

Mesin virtual BiometricPrompt diberikan seperangkat metode panggilan balik otentikasi yang akan memberi tahu aplikasi Anda tentang hasil proses otentikasi.

Anda harus membungkus semua callback ini dalam instance kelas BiometricPrompt.AuthenticationCallback:

final BiometricPrompt myBiometricPrompt = new BiometricPrompt (aktivitas, newExecutor, BiometricPrompt baru .uthenticationCallback () {

Langkah selanjutnya adalah menerapkan beberapa, atau semua metode panggilan balik berikut:

1. onAuthenticationSucceeded ()

Metode ini disebut ketika sidik jari berhasil dicocokkan dengan salah satu sidik jari yang terdaftar pada perangkat. Dalam skenario ini objek AuthenticationResult diteruskan ke panggilan balik onAuthenticationSucceeded dan aplikasi Anda kemudian akan melakukan tugas dalam menanggapi otentikasi yang berhasil ini.

Untuk mempermudahnya, aplikasi kami akan merespons dengan mencetak Logcat Android Studio:

@Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (result); Log.d (TAG, "Sidik jari berhasil dikenali"); }

2. onAuthenticationFailed ()

Metode ini dipicu ketika pemindaian selesai dengan sukses tetapi sidik jari tidak cocok dengan cetakan yang terdaftar pada perangkat. Sekali lagi, aplikasi kami akan merespons acara otentikasi ini, dengan mencetak a ke Logcat:

@Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); Log.d (TAG, "Sidik jari tidak dikenali"); }

3. onAuthenticationError

Panggilan balik ini dipicu setiap kali kesalahan yang tidak dapat dipulihkan terjadi dan otentikasi tidak dapat diselesaikan dengan sukses. Misalnya, mungkin sensor sentuh perangkat ditutupi oleh kotoran atau lemak, pengguna belum mendaftarkan sidik jari apa pun pada perangkat ini, atau tidak ada cukup memori yang tersedia untuk melakukan pemindaian biometrik penuh.

Inilah kode yang akan saya gunakan di aplikasi saya:

@Override public void onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Terjadi kesalahan yang tidak dapat dipulihkan"); }}

4. pada Bantuan Otentikasi

Metode onAuthenticationHelp dipanggil setiap kali kesalahan non-fatal terjadi, dan termasuk kode bantuan dan yang menyediakan informasi lebih lanjut tentang kesalahan.

Untuk membantu menjaga kode kami secara langsung, saya tidak akan menggunakan onAuthenticationHelp di aplikasi kami, tetapi implementasi akan terlihat seperti ini:

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

Akhirnya, kita perlu memanggil metode authenticate () dari instance BiometricPrompt:

myBiometricPrompt.authenticate (promptInfo);

Menerapkan otentikasi biometrik Android Pie

Setelah Anda menyelesaikan semua langkah di atas, MainActivity Anda akan terlihat seperti ini:

impor androidx.appcompat.app.AppCompatActivity; impor androidx.biometric.BiometricPrompt; impor android.os.Bundle; import java.util.concurrent.Executor; impor java.util.concurrent.Executors; impor androidx.fragment.app.FragmentActivity; impor android.util.Log; impor android.view.View; impor androidx.annotation.NonNull; MainActivity kelas publik memperluas AppCompatActivity {private static final String TAG = MainActivity.class.getName (); @Override void onCreate yang dilindungi (Bundle saverInstanceState) {super.onCreate (saverInstanceState); setContentView (R.layout.activity_main); // Buat kumpulan utas dengan utas tunggal // Eksekutor newExecutor = Executors.newSingleThreadExecutor (); Aktivitas FragmentActivity = ini; // Mulai mendengarkan untuk acara autentikasi // BiometricPrompt final myBiometricPrompt = BiometricPrompt baru (aktivitas, newExecutor, BiometricPrompt.AuthenticationCallback () baru {@Override // onAuthenticationError dipanggil saat kesalahan fatal terjadi // kekosongan publikEtah, tidak ada @node @ntonasi) CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Cetak ke Logcat // Log.d (TAG, "Terjadi kesalahan yang tidak dapat dipulihkan")}}; // onAuthenticationSucceeded dipanggil ketika sidik jari dicocokkan dengan sukses // @Override public void onAuthenticationSucceeded (@NonNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded (hasil); // Cetak a ke Logcat // Log.dat (sidik jari "Fingerprint" dikenal berhasil ");} // onAuthenticationFailed dipanggil ketika sidik jari tidak cocok // @Override public void onAuthenticationFailed () {super.onAuthenticationFailed (); // Cetak a untuk Log cat // Log.d (TAG, "Sidik jari tidak dikenali"); }}); // Buat instance BiometricPrompt // BiometricPrompt.PromptInfo final promptInfo = new BiometricPrompt.PromptInfo.Builder () // Tambahkan beberapa teks ke dialog // .setTitle ("Teks judul di sini") .setSubtitle ("Subtitle di sini" ) .setDescription ("Ini adalah deskripsi") .setNegativeButtonText ("Cancel") // Bangun dialog // .build (); // Tetapkan onClickListener ke tombol “Otentikasi” aplikasi // findViewById (R.id.launchAuthentication) .setOnClickListener (View baru.OnClickListener () {@Override public void onClick (Lihat v) {myBiometricPrompt.authenticate) (promptInfo)} }); }}

Menguji proyek Anda

Sekarang Anda telah membuat proyek Anda, saatnya untuk menguji dan melihat apakah itu benar-benar menambahkan otentikasi sidik jari ke aplikasi Anda!

Untuk menjalankan proyek ini, Anda memerlukan smartphone atau tablet fisik yang menjalankan Android Pie, atau Android Virtual Device (AVD) yang menggunakan pratinjau Android P atau lebih tinggi.

Anda juga harus mendaftarkan setidaknya satu sidik jari di perangkat Anda. Jika Anda menggunakan perangkat Android fisik, maka:

  • Amankan layar penguncian Anda dengan PIN, kata sandi atau pola, jika Anda belum melakukannya (dengan menavigasi ke "Pengaturan> Kunci layar dan keamanan> Jenis kunci layar> Pola / Pin / Kata Sandi" dan kemudian ikuti instruksi pada layar).
  • Luncurkan aplikasi "Pengaturan" perangkat Anda.
  • Pilih "Kunci layar dan keamanan."
  • Pilih "Pemindai sidik jari."
  • Ikuti instruksi untuk mendaftarkan satu atau lebih sidik jari.

Perangkat virtual Android tidak memiliki sensor sentuh fisik, jadi Anda perlu mensimulasikan acara sentuh:

  • Luncurkan AVD Anda, jika Anda belum melakukannya.
  • Di samping AVD, Anda akan melihat potongan tombol. Temukan tombol “More” bertitik tiga (tempat kursor diposisikan pada tangkapan layar berikut) dan beri klik. Ini meluncurkan jendela "Kontrol Diperpanjang".
  • Di jendela Kontrol Lengkap, pilih "Sidik Jari." Ini membuka satu set kontrol, di mana Anda dapat meniru berbagai peristiwa sentuhan.
  • Buka menu tarik-turun, dan pilih sidik jari yang ingin Anda daftarkan pada perangkat ini; Saya menggunakan "Jari 1."
  • Sekarang, mari kita mengalihkan perhatian kita ke perangkat yang ditiru. Luncurkan aplikasi "Pengaturan" AVD, dan pilih "Keamanan & lokasi."
  • Jika Anda belum menyiapkan PIN, kata sandi, atau pola, lalu pilih "Kunci layar" dan ikuti petunjuk di layar untuk mengamankan layar kunci Anda, lalu navigasikan kembali ke layar "Pengaturan> Keamanan & lokasi" utama.
  • Pilih "Sidik Jari," diikuti oleh "Tambahkan sidik jari."
  • Anda sekarang akan diminta untuk menekan jari Anda ke sensor sentuh. Alih-alih, terus klik "Sentuh Sensor" hingga Anda melihat "Sidik Jari ditambahkan".

  • Klik "Selesai."
  • Jika Anda ingin mendaftarkan sidik jari tambahan, maka bilas dan ulangi langkah-langkah di atas.

Setelah Anda mendaftarkan setidaknya satu sidik jari, Anda siap menguji aplikasi Anda. Saya akan menguji bagaimana aplikasi kita menangani tiga skenario berbeda:

  • Pengguna mencoba mengautentikasi menggunakan sidik jari terdaftar.
  • Pengguna mencoba mengautentikasi menggunakan sidik jari yang tidak terdaftar pada perangkat ini.
  • Pengguna mencoba mengautentikasi menggunakan sidik jari yang tidak terdaftar, berkali-kali dan secara berurutan.

Mari kita coba untuk mengautentikasi menggunakan sidik jari yang baru saja kita daftarkan di perangkat kita:

  • Pastikan Anda melihat Monitor Logcat Android Studio, karena di sinilah berbagai aplikasi Anda akan muncul.

  • Instal aplikasi Anda di perangkat uji.
  • Ketuk tombol "Otentikasi dengan sidik jari" aplikasi Anda. Dialog otentikasi sidik jari akan muncul.
  • Jika Anda menggunakan perangkat fisik, tekan dan tahan ujung jari Anda terhadap sensor sentuh perangkat. Jika Anda menggunakan AVD, gunakan tombol "Sentuh sensor" untuk mensimulasikan acara sentuh.
  • Periksa Monitor Logcat. Jika otentikasi berhasil, maka Anda akan melihat yang berikut: "Sidik jari dikenali dengan sukses"

Selanjutnya, mari kita lihat apa yang terjadi jika kita mencoba mengautentikasi menggunakan sidik jari yang tidak terdaftar pada perangkat ini:

  • Ketuk lagi tombol “Otentikasi dengan sidik jari” aplikasi.
  • Jika Anda menggunakan AVD, maka gunakan jendela "Extended Controls" untuk memilih sidik jari itu bukan terdaftar di perangkat ini; Saya menggunakan "Jari 2." Berikan tombol "Sentuh sensor" klik.
  • Jika Anda menggunakan ponsel cerdas atau tablet Android fisik kemudian tekan dan tahan ujung jari Anda terhadap sensor sentuh perangkat - pastikan Anda menggunakan jari yang tidak terdaftar pada perangkat ini!
  • Periksa Logcat Android Studio, sekarang seharusnya menampilkan "Sidik Jari tidak dikenali".

Seperti yang telah disebutkan, BiometricPrompt API secara otomatis menangani upaya otentikasi gagal yang berlebihan. Untuk menguji fungsi ini:

  • Ketuk tombol "Otentikasi dengan sidik jari" aplikasi Anda.
  • Cobalah untuk mengautentikasi beberapa kali berturut-turut dengan cepat, menggunakan sidik jari yang tidak terdaftar.
  • Setelah beberapa upaya, kotak dialog akan ditutup secara otomatis. Periksa Logcat Android Studio, dan Anda akan melihat yang berikut: "Terjadi kesalahan yang tidak dapat dipulihkan."

Anda dapat mengunduh aplikasi lengkap dari GitHub.

Membungkus

Pada artikel ini, kami menjelajahi API BiometricPrompt Android Pie yang baru, yang memungkinkan Anda dengan mudah menambahkan otentikasi sidik jari ke aplikasi Anda. Apakah menurut Anda BiometrikPrompt merupakan peningkatan pada metode otentikasi sidik jari Android sebelumnya? Beri tahu kami di komentar di bawah!

Benci kedudukan? Anda akan menyukai Vivo Nex baru. Tidak ada potongan di bagian ata, namun bezelnya maih menggiurkan. Ini mungkin terlihat eperti penyangga dari film fiki ilmiah, tetapi ini adalah pon...

Hari dimana banyak dari kita telah menunggu akhirnya tiba. martphone yang benar-benar beba bezel ada di ini! emacam. Banyak yang telah mencoba dan banyak yang gagal, dengan takik yang paling difitnah ...

Baca Hari Ini