BiometricPrompt在一段时间后消失或消失

时间:2019-10-23 07:00:45

标签: android android-biometric-prompt

我从以下文学作品中的Android应用程序中使用了新的BiometricPrompt

ORDER BY

加载活动后,我能够成功显示BiometicPrompt。

我的问题是,如果我将提示保持30-60秒理想状态,还是将应用更改为背景,或者在再次显示应用时提示显示时我锁定并解锁了屏幕,则BiometricPrompt被关闭/未显示。我无法确定问题是否出在我的执行人身上,请提供帮助。下面是我的代码

implementation 'androidx.biometric:biometric:1.0.0-rc01'

3 个答案:

答案 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函数上重置时递增。