生物识别

使用生物识别或设备凭据进行身份验证,并执行加密操作。
最新更新 稳定版 候选发布版 Beta 版 Alpha 版
2025 年 5 月 20 日 1.1.0 - - 1.4.0-alpha04

声明依赖项

要添加对 Biometric 的依赖项,您必须将 Google Maven 代码库添加到您的项目中。请阅读 Google Maven 代码库了解详情。

在您应用或模块的 build.gradle 文件中添加您所需的工件依赖项

Groovy

dependencies {
    // Java language implementation
    implementation "androidx.biometric:biometric:1.1.0"

    // Kotlin
    implementation "androidx.biometric:biometric-ktx:1.4.0-alpha02"
}

Kotlin

dependencies {
    // Java language implementation
    implementation("androidx.biometric:biometric:1.1.0")

    // Kotlin
    implementation("androidx.biometric:biometric:1.4.0-alpha02")
}

如需详细了解依赖项,请参阅添加构建依赖项

反馈

您的反馈有助于改进 Jetpack。如果您发现新问题或有改进此库的建议,请告诉我们。在创建新问题之前,请查看此库中的现有问题。您可以通过点击星形按钮为现有问题投票。

创建新问题

如需了解详情,请参阅 Issue Tracker 文档

版本 1.4

版本 1.4.0-alpha04

2025 年 5 月 20 日

androidx.biometric:biometric:1.4.0-alpha04 已发布。版本 1.4.0-alpha04 包含这些提交

新功能

  • 始终在内部对 Wear 应用使用 KeyguardManager API (I9b7fd)

API 变更

  • 添加特权身份验证器位 IDENTITY_CHECK (I706bb)

版本 1.4.0-alpha03

2025 年 3 月 26 日

androidx.biometric:biometric:1.4.0-alpha03 已发布。版本 1.4.0-alpha03 包含这些提交

新功能

  • 引入了一个新的身份验证入口点 registerForAuthenticationResult() API,以取代 androidx.biometric:biometric-ktx 模块和 androidx.BiometricPrompt。此新 API 仿照 Activity Result API 建模,它与 Kotlin 和 Java 开发都能实现无缝兼容。

API 变更

  • ERROR_MORE_OPTIONS_BUTTON 重命名为 ERROR_CONTENT_VIEW_MORE_OPTIONS_BUTTON (I71d07)
  • IdentityCredential 添加 @Deprecated 注解以与框架保持一致。(I6ac90, b/140252778, b/217942278, b/251211046, b/239955609)
  • [1/3] 移除将重新设计的 biometric.auth 和 kotlin 库。(I2f67c)
  • [2/3] 添加 AuthenticationRequest 作为身份验证输入,以及 AuthenticationResult 作为身份验证结果类型。存在两种带构建器的 AuthenticationRequest。(I50fd9)
    1. 用于生物识别身份验证的 BiometricRequest,支持不同的 Strength 和可选的 Fallback
    2. 仅用于设备凭据身份验证的 CredentialRequest
  • [3/3] 为生物识别模块添加新的 activity-result 模式 API。具体来说,添加一个名为 registerForAuthenticationResult() 的注册 API,该 API 注册 AuthenticationResultCallback 和可选的 onAuthenticationFailedCallback,并返回一个 AuthenticationResultLauncher 以所有输入启动身份验证。(I2b06e)

错误修复

  • 此库现在使用 JSpecify nullness 注解,这些注解是类型用途。Kotlin 开发者应使用以下编译器参数来强制正确使用:-Xjspecify-annotations=strict(从 Kotlin 编译器 2.1.0 版开始,这是默认设置)。(Ib49b4, b/326456246)
  • 修复了无法实例化 Fragment androidx.biometric.FingerprintDialogFragment 的问题。(I51c4a, b/181805603)
  • 修复了设备主屏幕按钮按下时 BiometricPrompt 不会关闭的问题。(I8c393, I0ca8c, b/149770989)
  • 修复了在 API 34/35 上禁用生物识别应用验证时错误代码不一致的问题。(Ice99d, b/386918213)
  • 将强制启用强生物识别技术应用于旧设备上的组合身份验证器。(Ibb853, I5cfb3, b/257670132)

版本 1.4.0-alpha02

2024 年 8 月 7 日

androidx.biometric:biometric:1.4.0-alpha02androidx.biometric:biometric-ktx:1.4.0-alpha02 已发布。版本 1.4.0-alpha02 包含这些提交

新功能

  • PromptContentView 允许开发者将自定义内容视图显示为纯文本描述视图的附加选项
  • 生物识别提示上的应用徽标会显示 - 自动使用应用图标添加。

API 变更

  • 添加 API 以支持自定义内容视图
    • BiometricPrompt.PromptInfo.Builder#setContentView
    • BiometricPrompt.PromptInfo#getContentView
    • PromptContentView 接口
    • PromptVerticalListContentView
    • PromptContentViewWithMoreOptionsButton 类(仅适用于特权应用)
  • 添加 API 以支持徽标(仅适用于特权应用)
    • BiometricPrompt.PromptInfo.Builder#setLogoBitmap
    • BiometricPrompt.PromptInfo.Builder#setLogoRes
    • BiometricPrompt.PromptInfo.Builder#setLogoDescription
    • BiometricPrompt.PromptInfo#getLogoBitmap
    • BiometricPrompt.PromptInfo#getLogoRes
    • BiometricPrompt.PromptInfo#getLogoDescription 58c35c6

错误修复

  • compileSdk 更新到 35 5dc41be

版本 1.4.0-alpha01

2024 年 5 月 29 日

androidx.biometric:biometric:1.4.0-alpha01androidx.biometric:biometric-ktx:1.4.0-alpha01 已发布。此版本是在内部开发分支中开发的,目标是 Android 15 Beta 2。

错误修复

  • 更新 UI 以与 Android 15 中的平台变更保持一致

版本 1.2.0

版本 1.2.0-alpha05

2022 年 9 月 21 日

androidx.biometric:biometric:1.2.0-alpha05androidx.biometric:biometric-ktx:1.2.0-alpha05 已发布。版本 1.2.0-alpha05 包含这些提交。

API 变更

  • 在 Android 13 中添加了对 android.security.identity.PresentationSessionCryptoObject 支持。(C5f1ec, b/197965513)

错误修复

  • 移除了不必要的资源变体以减小库大小。(I3601e, b/220178553)
  • 修复了在非 Activity 上下文中托管 BiometricPrompt 的问题。(Ife255)

版本 1.2.0-alpha04

2021 年 11 月 17 日

androidx.biometric:biometric:1.2.0-alpha04androidx.biometric:biometric-ktx:1.2.0-alpha04 已发布。版本 1.2.0-alpha04 包含这些提交。

新功能

  • 改进了对由非 Activity 上下文托管的 Fragment 的 BiometricPrompt 支持 (I9312b)

API 变更

错误修复

  • 修复了 API 29 上某些设备(包括模拟器)在回退到 PIN/图案/密码时会收到取消错误的问题。请注意,对于 API 29 上的某些设备,即使生物识别功能可用且已注册,这可能会导致用户被提示输入其屏幕锁定。(b/142740104)
  • 修复了 API 29 上没有生物识别硬件的设备无法正确回退到 PIN/图案/密码的问题 (b/170517889)

版本 1.2.0-alpha03

2021 年 2 月 24 日

androidx.biometric:biometric:1.2.0-alpha03androidx.biometric:biometric-ktx:1.2.0-alpha03 已发布。版本 1.2.0-alpha03 包含这些提交。

API 变更

  • 为 CredentialAuthPrompt 添加了 suspend 协程扩展,类似于其他 AuthPrompt 类型已有的扩展。(I9ac70)

版本 1.2.0-alpha02

2021 年 1 月 27 日

androidx.biometric:biometric:1.2.0-alpha02androidx.biometric:biometric-ktx:1.2.0-alpha02 已发布。版本 1.2.0-alpha02 包含这些提交。

API 变更

  • 将之前通过构建器设置的一些 AuthPrompt 字段重构为 startAuthentication(...) 方法参数。(I18896, b/174098373)
  • 为在旧版 Android 上支持有限或不支持的 AuthPrompt 类型添加了最低 API 级别要求。(I18896)
  • 为所有通过构建器设置的 AuthPrompt 字段添加了 getter 方法。(I18896)
  • 为通过 AuthPrompt API 进行生物识别身份验证添加了 suspend 协程 Kotlin 扩展。这些函数在成功时将直接返回 AuthenticationResult,或者在错误或失败(凭据拒绝)时抛出异常。(Iffc9e)

错误修复

  • 修复了在 Android 10(API 级别 29)上,当设备带有指纹传感器时,BiometricManager.canAuthenticate(int) 有时会返回错误状态代码的问题。(I72420, b/176921662)
  • 修复了在 Android 10(API 级别 29)及更早的 SDK 版本上,对于没有生物识别硬件且未注册 PIN、图案或密码的设备,BiometricManager.canAuthenticate(int) 会返回错误状态代码的问题。(I79b7d, b/174505824)
  • 修复了当 BiometricPrompt 托管在生命周期短于其关联 Activity 的 Fragment 中时可能发生的内存泄漏。(I70864, b/167014923)

版本 1.2.0-alpha01

2020 年 12 月 2 日

androidx.biometric:biometric:1.2.0-alpha01androidx.biometric:biometric-ktx:1.2.0-alpha01 已发布。版本 1.2.0-alpha01 包含这些提交。

新功能

  • 引入了 androidx.biometric:biometric-ktx 模块,该模块在 androidx.biometric:biometric 的基础上添加了 Kotlin 特定的 API 和扩展。

API 变更

  • 添加了新的 AuthPrompt API,用于构建 BiometricPrompt 和执行身份验证。这些 API 不要求 BiometricPrompt 在早期生命周期回调(如 onCreate)中构建。(I19022)
  • 为新的 AuthPrompt API 向 FragmentFragmentActivity 添加了 Kotlin 扩展。(Iaf98c)

版本 1.1.0

版本 1.1.0

2021 年 1 月 27 日

androidx.biometric:biometric:1.1.0 已发布。版本 1.1.0 包含这些提交。

1.0.0 版以来的主要变更

  • 添加了对 Android 11 中引入的新生物识别身份验证功能和 API 更新的向后兼容支持。
  • 显著减小了库的应用大小占用空间(在某些情况下超过 100 KB)。
  • 移除了之前由库引起的各种内存泄漏源。
  • 修复了可能影响旧版 Android 性能的类验证失败问题。
  • 对库的稳定性及其行为进行了多项其他改进。

版本 1.1.0-rc01

2020 年 11 月 11 日

androidx.biometric:biometric:1.1.0-rc01 已发布。版本 1.1.0-rc01 包含这些提交。

错误修复

  • 修复了某些设备上执行某些操作(身份验证、取消等)时有时会抛出 NullPointerException 的问题。(b/151316421)
  • 修复了在 Android 10 上使用 BiometricManager#canAuthenticate(int) 检查 Class 3 生物识别时,某些 Pixel 设备会报告错误状态的问题。(b/170406186)

版本 1.1.0-beta01

2020 年 10 月 1 日

androidx.biometric:biometric:1.1.0-beta01 已发布。版本 1.1.0-beta01 包含这些提交。

新功能

  • 通过在 Android 8.1 及更早版本上用静态资源替换对话框动画,显著减小了库的 APK 大小(在某些情况下压缩后超过 100 KB)。(I4844e)
  • 当生物识别身份验证被锁定后,BiometricPrompt 现在会在所有受支持的 Android 版本上自动回退到设备凭据身份验证(如果允许)。(b/149579143)

错误修复

  • 修复了 BiometricPrompt 在某些没有指纹传感器的 Android 9 设备上导致崩溃的问题。(b/151443237)
  • 修复了 FingerprintDialogFragment 中潜在的 NullPointerException。(b/167951429)
  • 修复了在 BiometricManager 中反射方法调用时使用了错误的 CryptoObject 类型的问题。(b/165824669)
  • 修复了在某些 Android 10 设备上,在关闭 BiometricPrompt 后不久再次显示会导致新提示自动关闭的问题。(b/157783075)
  • 修复了与使用 FingerprintManagerCompat 相关的内存泄漏。(b/165840273)
  • 修复了在某些 Android 9 设备上指纹对话框 UI 隐藏或显示不正确的问题。(b/154868505, b/148350291)

版本 1.1.0-alpha02

2020 年 8 月 19 日

androidx.biometric:biometric:1.1.0-alpha02 已发布。版本 1.1.0-alpha02 包含这些提交。

新功能

  • BiometricManager#canAuthenticate() 现在可能返回 BIOMETRIC_STATUS_UNKNOWN 以指示用户可能仍然能够进行身份验证,或者返回 BIOMETRIC_ERROR_UNSUPPORTED 以指示设备不支持给定的身份验证器组合。
  • BiometricPrompt#authenticate() 现在仅适用于 Android 11(API 级别 30)及更高版本,可用于设备凭据身份验证,并关联 CryptoObject

API 变更

错误修复

  • 修复了 LeakCanary 在 BiometricFragmentBiometricViewModel 中报告的内存泄漏。(b/144919472)
  • 确保 BiometricViewModel 不再从后台线程调用 MutableLiveData#setValue()。(b/159983244)
  • 修复了 BiometricPrompt 在某些 API 级别上无法正确处理临时锁定状态的问题。(9acfce9)
  • 修复了在某些 API 级别上,当设备未使用屏幕锁定凭据进行保护时,BiometricPrompt 会返回错误错误代码的问题。(b/148626482)
  • 修复了在某些 API 级别上,当设备没有键盘锁实现时,BiometricManagerBiometricPrompt 会返回错误错误代码的问题。(891c6e0)

版本 1.1.0-alpha01

2020 年 6 月 24 日

androidx.biometric:biometric:1.1.0-alpha01 已发布。版本 1.1.0-alpha01 包含这些提交。

新功能

  • 重构了内部库实现,以解决潜在的内存泄漏和其他意外行为来源
    • 内部 Fragment 现在使用与客户端应用的 Activity 生命周期相关联的 ViewModel 共享和持久化数据。
    • Android 10(API 级别 29)之前的设备凭据身份验证不再在客户端应用中启动透明 Activity。

错误修复

  • 解决了与使用 FingerprintManagerCompat 相关的废弃警告。(b/142967618)
  • 更改了 SDK 门控平台方法的调用方式,以避免在旧版 Android 上出现类验证问题。(94beb4b)
  • 不属于公共 API 的 Gradle 依赖项不再由库导出。(f289d9e)

版本 1.0.1

版本 1.0.1

2019 年 12 月 18 日

androidx.biometric:biometric:1.0.1 已发布。版本 1.0.1 包含这些提交

错误修复

  • 将现有的基于加密的身份验证指纹回退解决方法扩展到已知受影响的供应商,同时将其限制在 API 28 (b/143361271)
  • 修复了在某些设备上,生物识别对话框显示在系统叠加层下方的问​​题 (b/143230260)
  • 修复了 setDeviceCredentialAllowed(true) 的几个问题 (b/143091227, b/143097321, b/143653944)
  • 修复了在某些 Android 版本上,用户确认其设备凭据后并非总是调用 onAuthenticationSuccess 的问题 (b/145232806)
  • 修复了在某些 Android 版本上,当提示在旋转时被关闭时,并非总是调用 onAuthenticationError 的问题 (b/145230042)
  • 修复了在某些 Android 版本上,当收到某些错误代码时,提示不会被关闭的问题 (b/143683687)
  • 修复了 BiometricFragment 中潜在的 NullPointerException (b/142599311)

版本 1.0.0

版本 1.0.0

2019 年 11 月 7 日

androidx.biometric:biometric:1.0.0 已发布,自 1.0.0-rc02 以来无变化。版本 1.0.0 包含这些提交

1.0.0 版主要功能

  • BiometricPromptBiometricManager API 的兼容性版本,已在 Android 10 中实现,并完全支持回溯到 Android 6.0(API 23)的功能
  • BiometricPromptFragmentFragmentActivity 中的内置生命周期管理
  • 对已知在基于加密的身份验证期间错误地呈现弱生物识别的设备进行特殊处理

版本 1.0.0-rc02

2019 年 10 月 23 日

androidx.biometric:biometric:1.0.0-rc02 已发布。版本 1.0.0-rc02 包含这些提交

错误修复

  • 添加了一个针对某些已知在 API 版本 28 和 29 上调用基于加密的身份验证时错误地提供弱生物识别的设备的解决方法 (b/142150327)

版本 1.0.0-rc01

2019 年 10 月 9 日

androidx.biometric:biometric:1.0.0-rc01 已发布。版本 1.0.0-rc01 包含这些提交

错误修复

  • 修复了在屏幕旋转时关闭 FingerprintDialogFragment 导致潜在崩溃的问题 (b/141356362)
  • 修复了从框架 API 接收 null AuthenticationResult 可能导致崩溃的问题 (b/138862251)
  • 修复了在 onSaveInstanceState() 后关闭 BiometricPrompt 导致的崩溃问题 (b/138825362, b/140447194)

版本 1.0.0-beta02

2019 年 9 月 18 日

androidx.biometric:biometric:1.0.0-beta02 已发布。版本 1.0.0-beta02 包含这些提交

错误修复

  • 修复了 1.0.0-beta01 版本中设备凭据支持的问题
  • 移除了 Java 8 依赖项,并切换到依赖 Java 7 (b/140508526)
  • 当未检测到指纹硬件时,FingerprintHelperFragment 现在会正确抛出 ERROR_HW_NOT_PRESENT (b/140427586)

版本 1.0.0-beta01

2019 年 8 月 29 日

androidx.biometric:biometric:1.0.0-beta01 已发布。版本 1.0.0-beta01 包含这些提交

新功能

我们为 BiometricPrompt 引入了第二个构造函数,它允许在 Fragment 中托管(与现有需要 FragmentActivity 的构造函数相反)。

我们也很高兴将 Android 10 中的以下功能引入 AndroidX Biometric 库

  1. BiometricManager#canAuthenticate
  2. BiometricPrompt.PromptInfo#setConfirmationRequired
  3. BiometricPrompt.PromptInfo#setDeviceCredentialAllowed

在 Android 10 上,该库将调用平台 API 中的相应方法。在旧版 API 级别上,该库将模拟此行为。

API 变更

  • 为生物识别提示添加了 Fragment 特定的构造函数 (b/131980596)
  • 请参阅上面的“新功能”部分。

错误修复

  • 为 L+ 添加 BiometricPrompt 设备凭据支持
  • 修复了 BiometricPrompt 使用公共错误常量的问题 (b/137788194)
  • 修复了 BiometricPrompt.onAttach() 中的 NullPointerException (b/136103103)
  • 更改了行为,不允许通过提示外部的触摸事件取消 BiometricPrompt (b/135684487)
  • 修复了 Kotlin 中返回 null 错误值时 onAuthenticationError 崩溃的问题 (b/128350861)
  • FingerprintDialogFragment 现在可设置样式 (b/127878106)
  • FingerprintDialog 现在可滚动 (b/126367887)
  • 修复了旋转生物识别对话框时引发 IllegalStateException 的错误 (b/124153656), (b/123811924)
  • 修复了 API 级别 23 到 27 上行为不一致的问题。(b/124066957)
  • 修复了指纹登录对话框使用 Talkback 读取不正确文本的问题。(b/123572331)

版本 1.0.0-alpha04

2019 年 4 月 3 日

androidx.biometric:biometric:1.0.0-alpha04 已发布。此版本中包含的提交可在此处找到。

错误修复

  • 修复了生物识别 Fragment 并非在所有情况下都会清理的问题。(b/121117380)
  • 修复了 BiometricPrompt 仅允许一个 BiometricPrompt.AuthenticationCallback 实例的问题 (b/123857949)
  • 修复了 BiometricPrompt 错误行为在系统版本和兼容版本之间不一致的问题。(b/123572326)
  • 修复了回调 onAuthenticationError() 中带有 @NotNull errString 会导致运行时 NullPointerException 的问题 (b/123167217)
  • 修复了 androidx.BiometricPrompt 取消按钮崩溃的问题 (b/122054485)
  • 修复了 Android P 上 androidx.biometric.PromptInfo 标题/描述未更改的问题 (b/122856773)

版本 1.0.0-alpha03

2018 年 12 月 17 日

错误修复

  • 修复了 Fragment 相关问题
  • 在 O 及更早版本的设备上,锁定错误会立即返回,以与 P 及更高版本保持一致