问题标签 [android-biometric]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1372 浏览

android - setDeviceCredentialAllowed 和 ERROR_USER_CANCELED

我正在实施生物识别技术,如果用户不想要/拥有生物识别技术,我希望能够回退到使用 PIN 码。

问题是,当用户选择“使用 PIN”,输入他们的 PIN,并验证两个不同的回调时,会触发:

第一个:onAuthenticationSucceeded这是预期的。第二个:onAuthenticationErrorBiometricConstants.ERROR_USER_CANCELED

为什么输入 PIN 而不是生物识别会触发 ERROR_USER_CANCELED?我通过完成我的活动来处理这个错误,这不是我在这个流程中想要的。我这样做是因为当用户在对话框之外点击时我想关闭应用程序并且在这种情况下会触发同样的错误(尽管有这个修复)。

有没有办法区分故意取消对话框(通过后退按钮或在对话框外点击)和输入 PIN?

这是我的PromptInfo

在装有 Android 10 的 Pixel 2 上进行测试。使用版本"androidx.biometric:biometric:1.0.1"。谢谢!

0 投票
1 回答
1709 浏览

fingerprint - 使用 BiometricPrompt 检查生物特征和密码/密码的正确流程是什么?

BiometricManager有一个canAuthenticate可以返回 4 个标志之一的方法:

现在似乎只触发该BiometricPrompt调用的结果是否是合乎逻辑的BIOMETRIC_SUCCESS,否则回退到不同的身份验证方法(即特定于应用程序的密码)。

但是如果我setDeviceCredentialAllowed(true)在 BiometricPrompt 上设置,即使检查没有返回,它仍然可以使用设备密码(我认为在这种情况下它会返回)。canAuthenticateBIOMETRIC_SUCCESSBIOMETRIC_ERROR_NONE_ENROLLED

我还可以KeyguardManager用来检查是否设置了 pin/password/pattern:

但这仅适用于 API 23+。但是,setDeviceCredentialAllowed适用于低于 23 的 API 级别。但似乎没有真正的替代方法可以检查这些旧设备上是否设置了设备密码

所以我的问题是:使用所有这些不同的选项,向用户展示适当的身份验证方法的正确流程是什么?应该如何canAuthenticateisDeviceSecure一起使用,对于低于 23 的 API 级别应该使用什么检查?

0 投票
3 回答
3187 浏览

android - 使用设备凭据时,AuthenticationCallback 中的 Android 生物识别身份验证无效变量

我使用 androidx.biometric:biometric:1.0.1一切正常,但是当我有一个没有生物识别传感器的设备(或者当用户没有设置他的指纹等)并且我在进行身份验证后尝试使用DeviceCredentials 时,我的函数输入数据无效。

首先我点击我的first按钮,进行身份验证,然后我点击我的second按钮并进行身份验证,然后android logcat是这样的:

正如您在最后一行中看到的 MyData id 和 text 无效!autneticate调用 onAuthenticationSucceeded 时函数 input(data) 不一样!

(如果您尝试对其进行测试,请务必使用 DeviceCredentials 而不是生物特征,我的意思是模式或密码,请取消设置您的指纹) 为什么数据在回调中无效?

它可以在 android 10 或指纹上正常工作

我不想使用 onSaveInstanceState。

0 投票
1 回答
265 浏览

androidx - 添加 androidx 生物识别 API 时出现 proguard 错误(“androidx.biometric:biometric:1.0.1”)

在 gradle 文件中添加 androidx biometric api "androidx.biometric:biometric:1.0.1" 后,我在构建发布 apk 时遇到以下错误

原因:com.android.builder.internal.aapt.v2.Aapt2Exception:Android 资源链接失败 ../release/values-v28/values-v28.xml:7:错误:找不到资源 android:attr/dialogCornerRadius。../release/values-v28/values-v28.xml:11:错误:找不到资源 android:attr/dialogCornerRadius。../release/values/values.xml:2853:错误:找不到资源 android:attr/fontVariationSettings。../release/values/values.xml:2854:错误:找不到资源 android:attr/ttcIndex。错误:链接引用失败。

我正在使用下面提到的 sdk / tools version buildToolsVersion = '28.0.3' compileSdkVersion 28 targetSdkVersion 28

我能够构建调试 apk 并且工作正常

0 投票
1 回答
279 浏览

android-biometric-prompt - BiometricManager 确定人脸识别结果与指纹

我已经开始迁移到 Android 29 的 BiometricManager 部分。我们需要根据设备支持显示不同的面部或指纹图标。尽管可以使用人脸识别,但即使以下代码在 Pixel 4 上也返回 true。

0 投票
0 回答
144 浏览

android - 在活动页面上显示生物特征身份验证对话框,而不是将其显示为警报对话框

我正在为我的应用程序实施生物识别提示。目前它的身份验证对话框显示为警报对话框。我希望对话框显示在活动页面中(我不希望它显示为警报对话框)

0 投票
0 回答
340 浏览

android - 运行 Android 9 及更低版本的设备上的 AndroidX BiometricPrompt

当使用 BiometricPromptsetDeviceCredentialAllowed(true)然后执行多个失败的指纹身份验证时,我希望设备回退到请求 PIN/模式来解锁设备。根据我的经验,Android 10 以下的 Android 设备实际上都没有这样做。

实际发生的是我收到ERROR_LOCKOUT错误消息onAuthenticationError,然后指纹读取器被系统禁用。这意味着即使我在 UI 中有一个“使用指纹登录”按钮,在用户多次验证失败后它也不会做任何事情。

在我运行 Android 10 的 OnePlus 7 Pro 上,行为是正确的;在多次失败的身份验证尝试后,对话框会要求输入 PIN。使用 AndroidX Biometrics,我希望旧设备上也会发生相同的行为。还是我弄错了?

编辑:向 Google 创建了关于此的错误报告:https ://issuetracker.google.com/issues/148045413

0 投票
0 回答
937 浏览

android - 锁定屏幕上的 BiometricPrompt 对话框

我正在尝试在我的 android 应用程序中实现指纹认证。
我正在使用这个库:https ://github.com/infinum/Android-Goldfinger它使用 BiometricPrompt 并且效果非常好。问题是我需要在锁定屏幕上显示的活动中使用它。特别是该活动正在使用这些标志:

当activity正常启动时(不是在锁屏上),弹出指纹认证对话框,运行良好。相反,当活动显示在锁定屏幕上时,指纹身份验证对话框不会出现。

我已经阅读了有关使用旧(且已弃用)API 的 FingerprintManager 的信息,我不想使用这些 API。

有没有办法在 BiometricPrompt 对话框上应用这些标志?或者根本不允许在锁定屏幕上显示对话框?

0 投票
1 回答
561 浏览

android - 使用设备凭据时 Android 生物识别无法导航

我正在使用生物识别库来锁定应用程序。一切正常,当我使用指纹解锁时 onAuthenticationSucceeded() 被调用并且设备从锁定屏幕导航。但是,如果使用模式解锁,则会调用 onAuthenticationSucceeded() 但导航不会初始化,并且我会卡在锁定屏幕片段上。

编辑:这只会影响具有任何设备凭据的 API29

EDIT2:我也得到

FragmentNavigator:忽略 popBackStack() 调用:FragmentManager 已经保存了它的状态

FragmentNavigator:忽略 navigate() 调用:FragmentManager 已保存其状态

0 投票
1 回答
979 浏览

android - 按下设备主页按钮时不会关闭 Android 生物识别提示

当应用程序中使用 setDeviceCredentialAllowed(true) 显示生物识别提示时,按下设备主页按钮时不会关闭。它会引发 BiometricPrompt.ERROR_USER_CANCELED 错误并保持系统 UI 不变。

有人遇到过这个问题吗?有什么解决方法吗?

注意:我正在使用 androidx.biometric:biometric:1.0.1

注意:它的 Android 错误。https://issuetracker.google.com/issues/149770989