安卓使用androidx BiometricPrompt实现指纹验证

androidsdk版本大于29之后,使用FingerprintManagerCompat进行指纹验证显示被废弃,FingerprintManagerCompat的使用方法这里不再叙述。骨骼要求使用新的api去完成指纹验证,当然,BiometricPrompt不仅能做指纹验证,本文只讲解怎么用BiometricPrompt做指纹验证。
官方api:https://developer.android.google.cn/reference/androidx/biometric/package-summary?hl=zh-cn

首先导包

 implementation 'androidx.biometric:biometric:1.0.1'

然后它的构造方法

 1.BiometricPrompt(@NonNull FragmentActivity fragmentActivity,@NonNull Executor executor, @NonNull AuthenticationCallback callback)2. BiometricPrompt(@NonNull Fragment fragment,@NonNull Executor executor, @NonNull AuthenticationCallback callback)

两个构造方法参数基本一致,executor里面是一个runnable接口,在每次进行指纹操作后都会回调这个方法,注意:要想AuthenticationCallback的方法生效,必须在runnable里面执行runnable的run方法。
callback里面有三个回调方法,
1. onAuthenticationError(int errMsgId, CharSequence errString),指纹验证错误会调用此方法,errMsgId的值对应BiometricPrompt里面的常量
2. onAuthenticationSucceeded(@NonNull @NotNull BiometricPrompt.AuthenticationResult result),指纹验证成功后调用,通过result.getAuthenticationType获取验证成功的方式,参数类型自行查看。
3. onAuthenticationFailed() 识别失败调用,具体调用时机不太清楚。。可以参考官方文档说法

显示指纹验证需要一个BiometricPrompt.PromptInfo参数,会弹起一个弹窗进行显示,使用builder的方式初始化,可以设置title,subTitle,description,NegativeButtonText,用法如下

 new BiometricPrompt.PromptInfo.Builder().setTitle("title").setSubtitle("subTitle").setDescription("description").setDeviceCredentialAllowed(false).setNegativeButtonText("button").build()

需要注意的是setDeviceCredentialAllowed与setNegativeButtonText只能存在一个,即setNegativeButtonText不为空setDeviceCredentialAllowed必须为false
验证设备是否开启指纹通过BiometricManager.from(context).canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS方法;
代码展示:

     private BiometricPrompt biometricPrompt;private void startFinger(){biometricPrompt = new BiometricPrompt(this, new Executor() {@Overridepublic void execute(Runnable command) {command.run();}}, new FingerCallBack());biometricPrompt.authenticate( new BiometricPrompt.PromptInfo.Builder().setTitle("title").setSubtitle("subTitle").setDescription("description").setDeviceCredentialAllowed(false).setNegativeButtonText("button").build());}private void cancelFinger() {if (biometricPrompt != null) {biometricPrompt.cancelAuthentication();}}private class FingerCallBack extends BiometricPrompt.AuthenticationCallback {@Overridepublic void onAuthenticationError(int errMsgId, CharSequence errString) {super.onAuthenticationError(errMsgId, errString);Log.e("fingers", "onAuthenticationError");}@Overridepublic void onAuthenticationSucceeded(@NonNull @NotNull BiometricPrompt.AuthenticationResult result) {super.onAuthenticationSucceeded(result);cancelFinger();Log.e("fingers", "识别成功 onAuthenticationSucceeded");}@Overridepublic void onAuthenticationFailed() {super.onAuthenticationFailed();Log.e("fingers", "onAuthenticationFailed  ");}}

androidx指纹验证相关推荐

  1. 搭建直播带货平台,androidx指纹验证

    搭建直播带货平台,androidx指纹验证实现的相关代码 androidsdk版本大于29之后,使用FingerprintManagerCompat进行指纹验证显示被废弃,FingerprintMan ...

  2. 关于iOS 3D touch 指纹验证的随笔

    file:///Users/OWen/Desktop/3DTouch.png 随着iOS系统不断的更新迭代,苹果总会推出一些新的功能,今天就研究了一下iOS8之后推出的指纹验证的功能,然后写了一个小d ...

  3. 用于指纹验证的C#框架

    目录 介绍 在使用框架之前 运行指纹验证实验 可视化特征 从本框架中匹配指纹 向框架添加新算法 将现有算法集成到框架中 实验结果 结论 参考 在本文中,我们在C#中引入了一个用于指纹验证的框架,我们简 ...

  4. 支付宝指纹服务器暂时用不了,解决支付宝指纹验证失效的问题

    为了提升产品的竞争力,很多手机厂商都会不定期对经典型号提供固件升级服务.但是,很多手机在经历大版本的系统更新后总会出现一些Bug.以华为荣耀8为例,在更新EMUI5.0后,就容易出现支付宝指纹验证失效 ...

  5. 微信小程序调用指纹验证

    微信小程序调用指纹验证共有三个相关的接口 1.wx.checkIsSupportSoterAuthentication() 获取本机支持的 SOTER 生物认证方式 wx.checkIsSupport ...

  6. iPhone 5S及iWatch或将采用指纹验证技术

    关于指纹识别器将出现在iPhone 5S的传言不绝于耳,现在又有报道称该技术还将应用到苹果的iWatch. 在与相关零组件供应商会谈后,纽约Ticonderoga证券公司分析师布莱恩•怀特(Brian ...

  7. python爬虫 - 猿人学第十九题突破ja3指纹验证

    前言 (来csdn做备份,某客园的审核机制太蛋疼...) 废话不多说,直接干,再来猿人学19题 分析 看了下,没有加密参数: 然后拿着接口直接请求: 有结果的,不会吧,这么简单?没有加密参数?这次这么 ...

  8. android7.0 谷歌拼音,谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录...

    原标题:谷歌浏览器在Android 7.0及以上版本支持使用指纹验证进行无密码登录 来源:蓝点网 此前谷歌已经宣布与 FIDO 联盟达成合作关系并在安卓系统上调用指纹或面部识别等来登录某些支持的网站. ...

  9. uni-app 指纹验证

    次demo 在插件市场找的 链接地址:  https://ext.dcloud.net.cn/plugin?id=358 <template><view><button ...

  10. 为 iOS APP 添加手机密码、指纹验证

    2019独角兽企业重金招聘Python工程师标准>>> 原文  http://my.oschina.net/u/2340880/blog/542221?fromerr=fpdpdLP ...

最新文章

  1. 中山学院计算机学院家长座谈会,计算机科学与技术学院举办校友座谈会
  2. 【 仿真 】基于多维相似性分析的移动定位方法仿真
  3. 重新初始化k8s master节点
  4. 安装你自己的perl modules
  5. 数据挖掘应用实战-一文教你如何全面分析股市数据特征
  6. CVS的使用教程(转)
  7. ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 2, 1
  8. Weex组件库-Dialog
  9. 我的Delphi开发经验谈
  10. 【脑电信号】基于matlab小波工具箱脑电降噪【含Matlab源码 707期】
  11. Teamtalk线程池
  12. 斐讯k2路由器刷固件一条龙——从小白到大神
  13. linux下字符终端某些按键无法输入解决方法
  14. 校园多媒体直播系统方案
  15. c语言去尾法和进一法的例子,用“进一法”和“去尾法”解决问题教学案例
  16. Aviation turbofan starting model
  17. centos 7.6 安装Netbackup 9.1
  18. Debian安装谷歌浏览器(Google Chrome)
  19. 用python控制钉钉软件_python 调用钉钉机器人的方法
  20. 基于java web servlet生鲜商城管理系统源码含报告文档

热门文章

  1. 云袭2001's博客地址迁移啦——attacker.cc
  2. Expressive JavaScript
  3. “不学数学就去当厨子”,兰大校友入选全球竞赛最强10人,决赛最后几小时才想起做题...
  4. [Android实例] Android有效解决加载大图片内存溢出问题及优化虚拟机内存
  5. 系统文件损坏无法正常启动--记一次荡气回肠的自己挖坑自己跳然后爬出来的开心事...
  6. JavaWeb(Request、BeanUtils)
  7. Learning to Filter: Siamese Relation Network for Robust Tracking 论文笔记
  8. caffe编译-CUDNN_STATUS错误解决方案
  9. java中级课程_完整的JAVA中级程序员全面学习路线教程
  10. Cesium 影像卷帘对比