【问题标题】:Fingerprint BiometricPrompt on android P from a Viewandroid P上的指纹BiometricPrompt从视图
【发布时间】:2019-08-08 12:24:18
【问题描述】:

我正在使用FingerprintManager 使用指纹验证我的应用程序。 我有 android View 和指纹 ui,当调用 FingerprintManager.authenticate 回调时,我处理视图中的回调,例如更改指纹图标、错误文本等。

现在在 Android P 中,我必须使用BiometricPrompt,这很容易使用,但我必须使用Activity 才能正常工作

有没有办法让BiometricPrompt 在普通的android 视图中工作?

这是我在活动中启动提示的工作代码

    Signature signature = createSignature();
    biometricPrompt = new BiometricPrompt.Builder(context)
            .setDescription("Description")
            .setTitle("Title")
            .setSubtitle("Subtitle")
            .setNegativeButton("Cancel", context.getMainExecutor(), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    Log.i(TAG, "Cancel button clicked");
                }
            })
            .build();

        biometricPrompt.authenticate(new BiometricPrompt.CryptoObject(signature), cancellationSignal, context.getMainExecutor() , new BiometricPrompt.AuthenticationCallback() {...}

上下文是一个没有它就无法工作的活动

【问题讨论】:

  • "现在在 Android P 中,我必须使用 BiometricPrompt" 取决于您所说的 "必须" 是什么意思; FingerprintManager 已弃用,但它仍然可用,“其中上下文是一项活动” 我在文档中没有看到任何关于它必须是 Activity 的内容。查看BiometricPrompt 的源代码,它使用上下文的只是调用getSystemServicegetPackageManager。既然您已经需要Context 来获得FingerprintManager,您是否尝试过使用相同的上下文来创建BiometricPrompt
  • 是的,我已自动收到onAuthenticationError。此外,当在 android P 中使用 FingerprintManager 时,onAuthenticationError 也会自动调用在生产中部署的 FingerprintManager 的工作代码,不适用于我在 android P 中的用户,因此提出了这个问题。我还查看了 BiometricPrompt 源代码并看到了普通的上下文,而不是活动。所以这对我来说也很奇怪
  • “在android P中使用FingerprintManager时,也会自动调用onAuthenticationError” 我在Android P(Galaxy S10)和Android Q Beta(像素 3)。
  • 有意思,我去看看。你能粘贴一个示例代码,以便我可以看到差异吗?

标签: android fingerprint biometrics android-9.0-pie android-fingerprint-api


【解决方案1】:

查看我在问题线程中收到的 cmets 后,我发现问题出在 cancelSignal 中,FingerprintManager 在 Android P 中确实有效,BiometricPrompt 在视图中也有效,

实际问题出在运行 android P 的三星设备(Note9、S10)上, 使用FingerprintManager时会出现透明屏幕并覆盖视图 我在onDetach 中有cancelationSignal.cancel,这会破坏整个身份验证流程。在其他设备上这很有意义,因为用户可以按需关闭指纹屏幕

【讨论】:

  • 嗨,@BennyP。您对如何禁用三星设备(S10)弹出的“透明屏幕”有任何想法。我的应用程序有自己的指纹提示对话框,我不希望用户看到 2 个重叠的提示屏幕。谢谢!
  • 没有办法 afaik,你可以使用 BiometricPrompt 自定义你给用户的信息
猜你喜欢
  • 2020-06-13
  • 2021-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 2014-10-13
  • 1970-01-01
相关资源
最近更新 更多