Android Biometricprompt 生物识别(指纹)

API 29 即 Android 10 开始,系统为第三方应用提供了通过生物识别验证用户是否为本人的功能,实现也比较简单

因为在进行生物识别时,系统会禁止本应用截图,录屏也会是黑屏,所以借用官方文档中的图

在这里插入图片描述

首先要使用生物识别需要判断系统版本

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
	//使用生物识别
}else{
	//不使用生物识别
}

声明权限

<uses-permission android:name="android.permission.USE_BIOMETRIC"/>

创建对象
整个流程基本涉及三个对象
BiometricPrompt为生物识别的对话框,通过Builder的build()方法创建,通过authenticate方法显示
CancellationSignal为主动取消生物识别的标识,在需要主动取消生物识别(关闭对话框)的时候,需要调用CancellationSignal的cancel()方法。重复显示对话框时不能复用同一个CancellationSignal,否则会抛出异常
AuthenticationCallback是验证结果的回调,包括验证成功、失败、取消等
 

			//创建一个生物识别的对话框,
            biometricPrompt=BiometricPrompt.Builder(this)
                .setTitle("生物识别标题")
                .setDescription("描述")
                .setNegativeButton("取消",mainExecutor, object : DialogInterface.OnClickListener {
                    override fun onClick(dialog: DialogInterface?, which: Int) {
                        Toast.makeText(this@MainActivity, "取消", Toast.LENGTH_SHORT).show()
                    }
                })
                .build()
            //实现AuthenticationCallback,在身份验证通过、失败、取消时,会调用相应的方法
            authenticationCallback=object : BiometricPrompt.AuthenticationCallback(){
                override fun onAuthenticationError(errorCode: Int, errString: CharSequence?) {
                    super.onAuthenticationError(errorCode, errString)
                    Log.i(TAG, "onAuthenticationError: ${errString}")
                }

                override fun onAuthenticationHelp(helpCode: Int, helpString: CharSequence?) {
                    super.onAuthenticationHelp(helpCode, helpString)
                    Log.i(TAG, "onAuthenticationHelp: ${helpString}")
                }

                override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult?) {
                    super.onAuthenticationSucceeded(result)
                    Log.i(TAG, "onAuthenticationSucceeded: ")
                }

                override fun onAuthenticationFailed() {
                    super.onAuthenticationFailed()
                    Log.i(TAG, "onAuthenticationFailed: ")
                }
            }

开始验证

//每次调用authenticate时都必须传入一个新的CancellationSignal对象,否则会抛出异常
cancellationSignal= CancellationSignal()
cancellationSignal.setOnCancelListener {
	//主动取消后的逻辑,调用cancellationSignal.cancel()时会走这里
}
biometricPrompt.authenticate(cancellationSignal,mainExecutor,authenticationCallback)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值