iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 28
1
Mobile Development

Kotlin Android Jetpack 系列 第 28

{Day28}Biometric

Biometric

Biometric讓用戶不必每次打開APP時都記住帳戶用戶名和密碼,只需使用生物識別來確認並授權訪問。

BiometricManager.from(this).canAuthenticate():取得目前系統生物識別狀態。
BiometricPrompt.PromptInfo.Builder():創建生物識別資訊。
BiometricPrompt("要顯示的Fragment", "在主線程執行", "生物識別回調").authenticate("BiometricPrompt.PromptInfo"):設置生物識別資訊,並取得回調資訊。
dependencies {
    implementation 'androidx.biometric:biometric:1.0.1'
} 

判斷手機系統的生物識別

val biometricManager = BiometricManager.from(this)
when (biometricManager.canAuthenticate()) {
     BiometricManager.BIOMETRIC_SUCCESS ->
         Log.e("GOGO", "可以使用")
     BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE ->
         Log.e("GOGO", "硬體不支持此功能")
     BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE ->
         Log.e("GOGO", "目前無法使用")
     BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED ->
         Log.e("GOGO", "沒有設置")
}

調用生物識別

//設置參數
val info = BiometricPrompt.PromptInfo.Builder()
      .setTitle("標題")
      .setSubtitle("副標題")
      .setNegativeButtonText("取消")
      .build()

//設置回調
BiometricPrompt(this, ContextCompat.getMainExecutor(this),
     object : BiometricPrompt.AuthenticationCallback() {
         override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
               super.onAuthenticationError(errorCode, errString)
               Log.d("GOGO", errString.toString())
         }

         override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
               super.onAuthenticationSucceeded(result)
               Log.d("GOGO", "成功")
         }

         override fun onAuthenticationFailed() {
               super.onAuthenticationFailed()
               Log.d("GOGO", "失敗")
         }
}).authenticate(info)



上一篇
{Day27}CameraX
下一篇
{Day29}Espresso
系列文
Kotlin Android Jetpack 30

尚未有邦友留言

立即登入留言