android - 如果仅安装了面部作为生物特征,则使用 AndroidX.Biometric 的 KeyGeneration 会失败
问题描述
我们目前正在尝试使用生物识别技术对数据进行签名,我们使用 androidx.biometric 库。
问题是,如果没有安装指纹但人脸已注册,我们无法生成任何密钥。
仅使用指纹或结合指纹和面部,一切都完美无缺。
只注册了人脸,我们在密钥生成过程中得到以下异常:
原因:java.security.InvalidAlgorithmParameterException:java.lang.IllegalStateException:必须至少注册一个生物特征才能创建每次使用都需要用户身份验证的密钥
在我们开始生成密钥之前,我们测试生物特征的存在如下:
boolean isAvailable = biometricManager.canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS;
测试设备为搭载 Android 10 的三星 Galaxy S10。
感谢您的帮助和最好的问候
解决方案
Google 已更新 androidx 生物识别 sdk。如果您要在应用程序中使用强类型身份验证。可以检查强类型身份验证。如果你的设备适合这个,你可以创建一个cryptoObject。
https://developer.android.com/jetpack/androidx/releases/biometric#1.1.0-alpha02
val canAuthenticate = BiometricManager.from (context)
.canAuthenticate (BiometricManager.Authenticators.BIOMETRIC_STRONG)
完成此检查后,您可以继续生成密钥。
推荐阅读
- javascript - 在对象数组中循环?
- python - 如何不中断,但重新启动 while True 语句
- android - 特定网站未在 android web 视图中加载
- protobuf.js - 错误的打字稿生成文件
- reactjs - Figma React 插件 PostMessage 未按预期工作
- sql - 具有聚合函数的 1 对多 Select 查询(Adventure Works 数据库)
- clang-format - Clang 格式。如果行太长,如何使函数参数单独一行?
- c# - 无法在 Xamarin 中添加新的空白页
- java - 如何将字节数组发送到特定的接收者
- ios - ReplayKit - finishBroadcastWithError 不起作用