Biometric

通过生物识别特征或设备凭据进行身份验证,以及执行加密操作。
最近更新时间 稳定版 候选版 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")
}

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

反馈

您的反馈将帮助我们改进 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

bug 修复

  • 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 为目标平台。

bug 修复

  • 更新界面以与 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 支持。(C5f1ecb/197965513

bug 修复

  • 移除了不必要的资源变体,以缩减库大小。(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 上下文托管的 fragment 改进了 BiometricPrompt 支持 (I9312b)

API 变更

bug 修复

  • 修复了 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 变更

  • 重构了之前通过构建器在 startAuthentication(...) 方法参数中设置的一些 AuthPrompt 字段。(I18896b/174098373
  • 添加了针对旧版 Android 系统部分支持或不支持的 AuthPrompt 类型的最低 API 级别要求。(I18896)
  • 针对通过构建器设置的所有 AuthPrompt 字段添加了 getter 方法。(I18896)
  • 通过 AuthPrompt API 添加了针对生物识别身份验证机制的挂起协程 Kotlin 扩展。这些函数会在成功时直接返回 AuthenticationResult,或者在出错或失败时(凭据被拒)时抛出异常。(Iffc9e)

bug 修复

  • 修复了 BiometricManager.canAuthenticate(int) 针对配有指纹传感器的 Android 10(API 级别 29)设备有时会返回错误的状态代码的问题。(I72420b/176921662
  • 修复了 BiometricManager.canAuthenticate(int) 针对未配有生物识别硬件且未设置 PIN 码、图案或密码的 Android 10(API 级别 29)及以前的 SDK 版本设备会返回错误的状态代码的问题。(I79b7db/174505824
  • 修复了当托管 BiometricPrompt 的 Fragment 的生命周期比其关联的 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 中包含这些提交内容

bug 修复

  • 修复了在某些设备上执行特定操作(进行身份验证、取消等操作)时有时会抛出 NullPointerException 的问题。(b/151316421)
  • 修复了在 Android 10 上使用 BiometricManager#canAuthenticate(int) 检查 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)

bug 修复

  • 修复了以下问题:在某些没有指纹传感器的 Android 9 设备上,BiometricPrompt 会导致崩溃。(b/151443237)
  • 修复了 FingerprintDialogFragment 中的潜在 NullPointerException 问题。(b/167951429)
  • 修复了为 BiometricManager 中的反射方法调用使用错误的 CryptoObject 类型的问题。(b/165824669)
  • 修复了以下问题:在某些 Android 10 设备上,关闭后立即再次显示 BiometricPrompt 会自动产生需要关闭的新提示。(b/157783075)
  • 修复了与使用 FingerprintManagerCompat 相关的内存泄漏问题。(b/165840273)
  • 修复了以下问题:在某些 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 变更

bug 修复

  • 修复了 LeakCanary 在 BiometricFragmentBiometricViewModel 中报告的内存泄漏问题。(b/144919472)
  • 确保了 BiometricViewModel 不再从后台线程调用 MutableLiveData#setValue()。(b/159983244)
  • 修复了 BiometricPrompt 无法在某些 API 级别正确处理临时锁定的问题。(9acfce9)
  • 修复了 BiometricPrompt 在未使用屏幕锁定凭据的某些 API 级别的设备上返回的错误代码不正确的问题。(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。

bug 修复

  • 解决了与使用 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 中包含这些提交内容

bug 修复

  • 将基于加密的身份验证的现有指纹后备解决方法的适用范围扩大到已知受影响的供应商,但同时仍将其限制在 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 中包含这些提交内容

bug 修复

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

版本 1.0.0-rc01

2019 年 10 月 9 日

发布了 androidx.biometric:biometric:1.0.0-rc01版本 1.0.0-rc01 中包含这些提交内容

bug 修复

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

版本 1.0.0-beta02

2019 年 9 月 18 日

发布了 androidx.biometric:biometric:1.0.0-beta02版本 1.0.0-beta02 中包含这些提交内容

bug 修复

  • 解决了版本 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)
  • 请参阅上文的“新功能”一节。

bug 修复

  • 针对 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。点击此处可查看此版本中包含的提交内容。

bug 修复

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

版本 1.0.0-alpha03

2018 年 12 月 17 日

bug 修复

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