flutter [local_auth] [android] Non-biometrics authentication gives NotAvailable on Android 10

piztneat  于 6个月前  发布在  Flutter
关注(0)|答案(5)|浏览(89)

这个问题报告属于哪个软件包?
local_auth

你在哪些目标平台上看到了这个bug?
Android

你是否已经升级了你的软件包?
是的

依赖版本
pubspec.lock

local_auth:
    dependency: "direct main"
    description:
      name: local_auth
      sha256: "280421b416b32de31405b0a25c3bd42dfcef2538dfbb20c03019e02a5ed55ed0"
      url: "https://pub.dev"
    source: hosted
    version: "2.2.0"
  local_auth_android:
    dependency: transitive
    description:
      name: local_auth_android
      sha256: e0e5b1ea247c5a0951c13a7ee13dc1beae69750e6a2e1910d1ed6a3cd4d56943
      url: "https://pub.dev"
    source: hosted
    version: "1.0.38"
  local_auth_darwin:
    dependency: transitive
    description:
      name: local_auth_darwin
      sha256: "33381a15b0de2279523eca694089393bb146baebdce72a404555d03174ebc1e9"
      url: "https://pub.dev"
    source: hosted
    version: "1.2.2"
  local_auth_platform_interface:
    dependency: transitive
    description:
      name: local_auth_platform_interface
      sha256: "1b842ff177a7068442eae093b64abe3592f816afd2a533c0ebcdbe40f9d2075a"
      url: "https://pub.dev"
    source: hosted
    version: "1.0.10"
  local_auth_windows:
    dependency: transitive
    description:
      name: local_auth_windows
      sha256: "505ba3367ca781efb1c50d3132e44a2446bccc4163427bc203b9b4d8994d97ea"
      url: "https://pub.dev"
    source: hosted
    version: "1.0.10"

重现问题的步骤:
我尝试使用local_auth与Zebra TC26BK手机。
在安全/屏幕锁定上,这部手机上只有滑动、图案、PIN和密码选项。
我将屏幕锁定设置为PIN方法,并尝试使用图案。
我使用FlutterFragmentActivity()设置了我的项目,并根据文档中的Android集成部分向manifest添加了android.permission.USE_BIOMETRIC。
auth.canCheckBiometrics工作正常,给我FALSE。
auth.isDeviceSupported()返回TRUE,所以查询正常工作。
但是当我尝试进行身份验证时,使用final didAuthenticate = await auth.authenticate(localizedReason: 'please log in', options: const AuthenticationOptions(biometricOnly: false));,我得到了PlatformException(NotAvailable, Security credentials not available., null, null)
PIN屏幕从未出现,我无法用PIN登录我的应用程序。
我尝试使用插件示例应用程序,它给我相同的结果:

我如何解决这个问题?
预期结果:
有一个PIN屏幕。
实际结果:
没有出现PIN屏幕,只有PlatformException(NotAvailable, Security credentials not available., null, null)
代码示例:
您仓库中的例子代码。
截图或视频演示
[在这里上传媒体]
日志
Flutter Doctor输出
Doctor输出

njthzxwz

njthzxwz1#

这个解决方案解决了我的问题。
你能把它放在文档里吗?

ua4mk5z4

ua4mk5z42#

我认为这个问题应该在 #111025 上修复,但我看到你已经安装了最新版本的包 local_auth_android: 1.0.38
我再次使用 Android 模拟器 Pixel 3、Android 10 进行了检查,但无法重现该问题。我看到你有两台 Android 10 设备(来自 flutter doctor 输出)。你能确认这个问题在你的实际设备和模拟器上都发生过吗?

xzlaal3s

xzlaal3s3#

在模拟器中,这种情况不会发生,因为它有指纹生物识别传感器。此外,我的斑马手机的安卓10构建号是:10-16-10.00-QG-U00-STD-HEL-04,可能在模拟器中不是一样的。
对我来说很清楚,这是一个安卓的bug,他们已经用this jetpack package.

Fixed an issue where BiometricManager.canAuthenticate(int) would sometimes return the wrong status code for a device with a fingerprint sensor on Android 10 (API level 29). ([I72420](https://android-review.googlesource.com/#/q/I72420b5721ea41bae8b037f43ab8fbd49250ebf2), [b/176921662](https://issuetracker.google.com/issues/176921662))
Fixed an issue where BiometricManager.canAuthenticate(int) would return the wrong status code for a device with no biometric hardware and no enrolled PIN, pattern, or password on Android 10 (API level 29) and prior SDK versions. ([I79b7d](https://android-review.googlesource.com/#/q/I79b7dbf009c44582c4693be5d27dd850777ab4d1), [b/174505824](https://issuetracker.google.com/issues/174505824))

修复了。

nbnkbykc

nbnkbykc4#

感谢检查模拟器并引用版本androidx.biometric:biometric:1.2.0-alpha02的相关更改。我没有这样的Android 10物理设备来检查这个问题,但我认为这是一个有效的问题。也许我们可以在生物识别依赖项发布稳定版本后,将其滚动到新的包版本。这是为了其他人的想法而标记的。

ux6nzvsh

ux6nzvsh5#

当前状态是我们认为问题出在底层生物识别的androidx实现上。我们正在努力确定他们的下一个稳定版本何时发布,并将此错误保持开放以跟踪更新依赖项。

相关问题