Jetpack的的BiometricPrompt(androidx.biometric.Biomet

2019-10-29 08:02发布

我使用androidx.biometric:biometric:1.0.0-alpha03在一个测试项目,推动了当negative button ,我总是收到以下错误信息:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence androidx.biometric.BiometricFragment.getNegativeButtonText()' on a null object reference
    at androidx.biometric.BiometricPrompt$1$1.run(BiometricPrompt.java:329)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:764)

我认为这是一个图书馆问题,它需要的片段似乎是空是固定的或者是有什么我做错了什么?

val prompt = BiometricPrompt(activity, Executors.newSingleThreadExecutor(), object : BiometricPrompt.AuthenticationCallback() {
        override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {}
        override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {}
        override fun onAuthenticationFailed() {}
})

val promptInfo = BiometricPrompt.PromptInfo.Builder()
        .setTitle(title)
        .setSubtitle(subtitle)
        .setDescription(description)
        .setNegativeButtonText(activity.getString(android.R.string.cancel))
        .build()

prompt.authenticate(promptInfo)

Answer 1:

据报道,这三个月前的一个bug,它被报告为固定的两个月前 。 但是,他们还没有发布新的神器。

存在这样的问题,一些评论认为认为“这是一个时间的事情”,那将延迟可以帮助作为一种解决方法。



Answer 2:

当看着这行:

.setNegativeButtonText(activity.getString(android.R.string.cancel))

我们可以注意到,这有可能是两个参数丢失(它甚至完全是另外一个方法):

.setNegativeButton("Cancel", executor, cancelListener)

和上面的代码贴不提供任何CancelListener ...

这似乎很可能是其中的原因NullPointerException

供参考: 更好的生物识别技术在Android的P & 什么在Android的P是新的- BiometricPrompt 。



文章来源: Jetpack's BiometricPrompt (androidx.biometric.BiometricPrompt) throws NullPointerException