【发布时间】: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的源代码,它使用上下文的只是调用getSystemService和getPackageManager。既然您已经需要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