如何解决Android - 当用户最小化应用程序而不是在活动中移动时使指纹验证无效
我有一个应用程序,其中使用指纹锁来保护应用程序不被使用,而无需先使用指纹进行身份验证。 问题是验证只发生在应用程序第一次启动时;所以在第一次启动后,在再次启动应用程序之前不再进行验证, 但是我希望当前验证在应用程序中的不同活动之间移动时有效,但是如果用户最小化应用程序或手机屏幕熄灭时它应该无效,以便用户在最小化后再次验证指纹并重新进入应用程序。
我尝试使用基本活动并覆盖 onPause 和 onResume,但即使在跨活动移动时也会调用这些方法,这不是我想要的。
解决方法
您可能可以使用系统广播意图 ACTION_SCREEN_ON
、ACTION_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 举报,一经查实,本站将立刻删除。