API 28及以上版本能否使用FingerprintManager替代BiometricPrompt?
API 28及以上版本使用FingerprintManager替代BiometricPrompt的可行性说明
直接结论
不推荐在API 28及更高版本中用FingerprintManager替代BiometricPrompt,该方案不属于合理的长期迭代方案,具体原因和替代方案如下:
核心依据
- API 28(Android 9)开始,
FingerprintManager已被官方正式标记为废弃状态,谷歌已停止对该类的功能维护和迭代 - 从API 30开始,系统已经对
FingerprintManager的调用做了权限收窄,未申请特殊权限的应用调用相关方法会直接抛出安全异常,后续Android版本随时可能完全移除该类的所有接口,直接导致应用崩溃 FingerprintManager仅支持指纹这一种生物认证方式,无法适配现在主流设备的面部识别、虹膜识别等其他生物认证能力,适配覆盖范围极窄
关于AuthenticationCallback和无弹窗需求的说明
你观察到的无弹窗调用的AuthenticationCallback,属于两种不同情况:
- 如果是
FingerprintManager.AuthenticationCallback,是应用仅对低版本(API<28)设备走废弃API的兼容逻辑,高版本不会触发这段代码 - 如果是
BiometricPrompt.AuthenticationCallback,是应用没有使用系统默认提供的BiometricPrompt弹窗,自行实现了自定义认证UI,这种用法是合规的,无需强制调用系统弹窗
合理实现方案
针对无需展示系统弹窗的需求,推荐做分层兼容:
- API >=28 场景:使用
BiometricPrompt实现认证逻辑,自定义认证UI,按需申请对应厂商的无弹窗生物认证权限即可 - API <28 场景:使用
FingerprintManager做低版本兜底适配
内容的提问来源于stack exchange,提问作者Taha Sami
相关产品推荐
相关产品推荐

