检测来自后台的应用程序并在Android中提示输入PIN

时间:2012-10-17 18:34:42

标签: android

我有一个应用程序,每当应用程序来自后台时,我都需要提示用户输入PIN。

我从@hackbod和@commonsware查看了stackoverflow的几个答案 我实现了@commonsware的超时方法,它工作正常,但我的用户对它不满意。他们希望每当应用程序来自后台时都会提示输入PIN码。

现在我正在实现@hackbod的解决方案,让每个活动在onStart中递增计数器并减少onStop中的计数。 Android detecting if an application entered the background

但问题是当用户更改当前活动的方向时,计数器会设置回0并且我的应用认为用户来自后台。 我的onStart()递增计数器,onStop递减计数器。 我希望android能够处理方向更改,因为我有不同的布局以适应不同的方向。

我现在不想使用GET_TASKS方法。 所有建议都表示赞赏..

2 个答案:

答案 0 :(得分:2)

看看Activity Lifecycle。如果我要完成这样的事情,我会让每个活动请求一个引脚,除非它们以一个intent启动活动,并使用当前引脚启动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
}

根据这种方法,当应用程序首次启动时,它会提示输入引脚。在主活动启动其他活动后输入引脚后,它将传递存储的PIN,并且不会再次提示该引脚。

当你开始另一项活动时,你可能还必须清除当前活动的额外内容。

答案 1 :(得分:0)

在某些时刻,我一直在寻找非常相似的行为。以下是我提出的赏金问题:

How to always start from a startup activity on Android?

它有很多不同的方法。然而,他们每个人都有一些缺点。