从视图查看Android P上的Fingerprint BiometricPrompt

时间:2019-03-18 07:13:30

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

我正在使用FingerprintManager用指纹对我的应用进行身份验证。 我有一个带有指纹ui的android View,当调用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() {...}

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

1 个答案:

答案 0 :(得分:0)

浏览完我在问题线程中收到的评论后,我发现问题出在cancelSignal中,FingerprintManager在Android P中以及在视图中的BiometricPrompt中均有效,

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