生物识别

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

声明依赖项

要添加对 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。如果您发现新问题或有改进此库的想法,请告知我们。在创建新问题之前,请查看此库中现有的问题。您可以通过点击星形按钮为现有问题添加您的投票。

创建新问题

有关更多信息,请参阅问题跟踪器文档

版本 1.4

版本 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.PresentationSession 添加了 CryptoObject 支持。(C5f1ecb/197965513

错误修复

  • 移除不必要的资源变体以减小库大小。(I3601eb/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 上下文托管的片段的 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 添加了类似于其他 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(...) 方法的参数。(I18896b/174098373
  • 为在旧版 Android 版本上支持有限或不支持的 AuthPrompt 类型添加了最低 API 级别要求。(I18896
  • 为通过构建器设置的所有 AuthPrompt 字段添加了 getter 方法。(I18896
  • 为通过 AuthPrompt API 进行的生物识别身份验证添加了挂起协程 Kotlin 扩展。这些函数将在成功时直接返回 AuthenticationResult,或在错误或失败(凭据拒绝)时抛出异常。(Iffc9e

错误修复

  • 修复了 BiometricManager.canAuthenticate(int) 在 Android 10(API 级别 29)上某些带有指纹传感器的设备上有时会返回错误状态码的问题。(I72420b/176921662
  • 修复了 BiometricManager.canAuthenticate(int) 在 Android 10(API 级别 29)及更早的 SDK 版本上,对于没有生物识别硬件且没有注册 PIN、图案或密码的设备会返回错误状态码的问题。(I79b7db/174505824
  • 修复了当 BiometricPrompt 在生命周期比其关联的 Activity 短的片段中托管时发生的内存泄漏。(I70864b/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 *不需要* 在早期生命周期回调(例如 onCreate)中构建 BiometricPrompt。(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
  • 修复了某些 Pixel 设备在使用 BiometricManager#canAuthenticate(int) 检查 Android 10 上的 **3 类** 生物识别信息时会报告错误状态的问题。(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
  • 修复了指纹对话框 UI 在某些 Android 9 设备上隐藏或显示不正确的问题。(b/154868505b/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
  • 修复了在某些 API 级别上,BiometricPrompt 未正确处理临时锁定问题。(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 包含这些提交。

新功能

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

错误修复

  • 解决了与使用 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/143091227b/143097321b/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 的主要功能

  • Android 10 中实现的 BiometricPromptBiometricManager API 的兼容版本,全面支持 Android 6.0(API 23)及更高版本。
  • FragmentFragmentActivity 中为 BiometricPrompt 提供内置生命周期管理。
  • 针对已知在基于加密的身份验证期间错误地提供弱生物识别信息的设备进行特殊处理。

版本 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 接收空 AuthenticationResult 可能会导致崩溃的问题。(b/138862251
  • 修复了 BiometricPromptonSaveInstanceState() 后被关闭导致的崩溃问题。(b/138825362b/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 中相应的 method。在旧版 API 级别上,库将模拟该行为。

API 更改

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

错误修复

  • 为 L+ 添加 BiometricPrompt 设备凭据支持。
  • 修复了 BiometricPrompt 以使用公共错误常量。(b/137788194
  • 修复了 BiometricPrompt.onAttach() 中的 NullPointerException。(b/136103103
  • 更改行为,不允许通过提示外部的触摸事件取消 BiometricPrompt。(b/135684487
  • 修复了在 Kotlin 中返回空错误值时,回调 onAuthenticationError() 导致运行时 NullPointerException 的问题。(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 已发布。此版本中包含的提交可以在这里找到 这里

错误修复

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

版本 1.0.0-alpha03

2018 年 12 月 17 日

错误修复

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