我从以下文学作品中的Android应用程序中使用了新的BiometricPrompt
ORDER BY
加载活动后,我能够成功显示BiometicPrompt。
我的问题是,如果我将提示保持30-60秒理想状态,还是将应用更改为背景,或者在再次显示应用时提示显示时我锁定并解锁了屏幕,则BiometricPrompt被关闭/未显示。我无法确定问题是否出在我的执行人身上,请提供帮助。下面是我的代码
implementation 'androidx.biometric:biometric:1.0.0-rc01'
答案 0 :(得分:1)
那是根据设计。应用程序不应无限期地等待生物特征认证。不同设备之间的超时时间可能会有所不同。
发生超时时,我希望您以onAuthenticationError
作为错误代码来调用BiometricConstants.BIOMETRIC_ERROR_TIMEOUT
。
我不知道Google为什么选择不通过BiometricManager
公开该常量。但是,对onAuthenticationError
的任何调用都应被视为不可恢复的错误,并且验证已经结束。
答案 1 :(得分:0)
当任务堆栈切换(用户转到其他应用程序或主屏幕)时,或者当设备转到键盘锁/屏幕关闭时,BiometricPrompt消失。故意的行为是无法还原身份验证,因为用户有可能恢复应用程序并已经忘记上下文。
答案 2 :(得分:0)
如答案中所述,通过生物识别提示存在故意行为,因此不会在后台再次提示。
对此有一个解决方法,但是在“活动”中使用WindowFocusChanged
@Override
public void onWindowFocusChanged(boolean hasFocus){
if(hasFocus){
biometricPromptFunction();
}
}
基本上,当应用从前台返回时,焦点位于当前活动上,并启动生物识别提示。 请记住,即使它被取消或取消,它也会一直提示。为避免这种情况,您需要保持一个计数器,该计数器在windowFocus更改并在onResume函数上重置时递增。