在安卓系统中检测应用程序从后台返回并提示输入PIN码

4
我有一个应用程序,需要提示用户每次从后台返回时输入PIN码。
我查看了stackoverflow上的一些答案,包括@hackbod和@commonsware。我实现了@commonsware的超时方法,它运行良好,但我的用户不满意。他们希望每次应用程序从后台返回时都提示输入PIN码。
现在我正在实现@hackbod的解决方案,通过在每个活动中增加onStart中的计数器并在onStop中减少计数器来实现。 Android detecting if an application entered the background 但问题是,当用户更改当前活动的方向时,计数器会重置为0,我的应用程序会认为用户是从后台返回的。 我的onStart()增加计数器,而onStop()则减少计数器。 我希望Android能够处理方向更改,因为我有不同方向的布局。
目前我不想使用GET_TASKS方法。 欢迎各种建议。
2个回答

2
请查看Activity生命周期。如果我要实现这样的功能,我会让每个活动都请求一个PIN码,除非它们是通过带有当前PIN码Extra值的意图启动的活动。 启动活动:
Intent intent = new Intent(getBaseContext(), NewActivity.class);
intent.putExtra("PIN", storedPIN);
startActivity(intent);

活动开始:

@Override
public void onResume() {
    super.onResume();

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String value = extras.getString("PIN");
    }

    //Check pin to make sure it matches stored pin
    //Else prompt for pin
}

根据这种方法,当应用程序首次启动时,它会提示输入密码。在输入密码后,当主Activity启动其他Activity时,它会传递存储的密码,不会再次提示输入密码。
在启动另一个Activity时,您可能还需要清除当前Activity中的额外信息。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接