如果您在活动中创建biometricPrompt和提示符Info,它将正常工作。但是我无法使它在片段中工作。
这是片段的内部,在OnViewCreated内部被调用。您可以在一个非常有用的活动中执行相同的操作,一种解决方案是从该活动中传递biometricPrompt和PromptInfo并将其传递到片段中。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
tryToDisplayBiometricPrompt()
}
@TargetApi(Build.VERSION_CODES.M)
private fun tryToDisplayBiometricPrompt() {
//Create a thread pool with a single thread
biometricPrompt = BiometricPrompt(activity as FragmentActivity, Executors.newSingleThreadExecutor(), object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
authenticationSuccessful()
}
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
if (errorCode == BiometricConstants.ERROR_NEGATIVE_BUTTON || errorCode == BiometricConstants.ERROR_USER_CANCELED || errorCode == BiometricPrompt.ERROR_CANCELED) return
authenticationlistener?.isBiometricAvailable = false
authenticationlistener?.onAuthenticationFailed()
}
})
promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle(getString(R.string.biometric_title))
.setSubtitle(getString(R.string.biometric_subtitle))
.setDescription(getString(R.string.biometric_description))
.setNegativeButtonText(getString(R.string.cancel))
.build()
biometricPrompt?.authenticate(promptInfo)
}
答案 0 :(得分:1)
请参阅下面的内容或相同的答案here
通过提供第二个构造函数,可以在List posts = [];
void getPostsList() async {
final fetchedPosts = await NetworkFile().getPosts();
setState(() {
posts = fetchedPosts;
});
print(posts);
}
中解决此问题。在此版本之前,我通过恢复为androidx.biometric:biometric:1.0.0-beta01
来解决了该问题,但是现在有一个实际的解决方案。
您可以找到alpha03
发行说明here
我们为BiometricPrompt引入了第二个构造函数,该构造函数允许 它将托管在Fragment中(与现有的构造方法相对, 这需要一个FragmentActivity)。
您可以找到新的beta01
构造函数文档here
BiometricPrompt
要修复,请按照以下简单步骤操作:
BiometricPrompt(Fragment fragment, Executor executor, BiometricPrompt.AuthenticationCallback callback)
使用新的构造函数。简而言之,将第一个参数更改为片段而不是活动。请在下面查看我的代码更改:
1.0.0-beta01