微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android - 当用户最小化应用程序而不是在活动中移动时使指纹验证无效

如何解决Android - 当用户最小化应用程序而不是在活动中移动时使指纹验证无效

我有一个应用程序,其中使用指纹锁来保护应用程序不被使用,而无需先使用指纹进行身份验证。 问题是验证只发生在应用程序第一次启动时;所以在第一次启动后,在再次启动应用程序之前不再进行验证, 但是我希望当前验证在应用程序中的不同活动之间移动时有效,但是如果用户最小化应用程序或手机屏幕熄灭时它应该无效,以便用户在最小化后再次验证指纹并重新进入应用程序。

我尝试使用基本活动并覆盖 onPause 和 onResume,但即使在跨活动移动时也会调用这些方法,这不是我想要的。

解决方法

您可能可以使用系统广播意图 ACTION_SCREEN_ONACTION_SCREEN_OFF 和/或 ACTION_USER_PRESENT 来实现您的目标。查看 https://developer.android.com/reference/android/content/Intent 了解更多信息。

为此,请注册为广播接收器以在您的主要活动 onCreate 中接收这些通知,在 onDestroy 中取消注册。您可以使用这些通知来设置指示是否需要身份验证的标志。

示例代码:

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    .
    .
    .
        // register to receive appropriate events

        IntentFilter intentUserPresent = new IntentFilter(Intent.ACTION_USER_PRESENT);
        intentUserPresent.addAction(Intent.ACTION_USER_PRESENT);
        registerReceiver(userActionReceiver,intentUserPresent);
        
    .
    .
    .
    }
    

    // create a BroadcastReceiver to receive the notifications
    private BroadcastReceiver userActionReceiver = new BroadcastReceiver()
    {
        @Override
        public void onReceive(Context context,Intent intent)
        {
            Log.d("MyLog",String.format("MainActivity received broadcaast %s",intent.toString()));

            if (intent.getAction() == Intent.ACTION_USER_PRESENT)
            {
               // set flag indicating re-authentication is needed
            }
        }
    };
    
    @Override
    protected void onDestroy()
    {
        // make sure to un-register the receiver!
        unregisterReceiver(userActionReceiver);
        super.onDestroy();
    }

这不会检测到用户“最小化应用程序”,但不清楚为什么您会认为在这种情况下需要重新进行身份验证。生命周期事件 onStart/onStop 可以检测活动的背景/前景。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。