我有一个应用程序,当用户第一次打开它或从其他应用程序返回后,它必须要求他输入密码。因此,我创建了输入密码活动,用户输入密码并移至主活动并将EP活动设置为起始活动。然后我想在onRestart()方法中调用Enter Password Activity,当我从另一个应用程序返回我的应用程序时它会起作用,但当我从另一个活动返回主活动时它也会触发。这是不正确的。我需要输入密码活动才能弹出,只有当我从外面回复我的应用程序"。
public class MainActivity extends AppCompatActivity implements RecyclerViewClickListener {
/../
@Override
protected void onRestart() {
super.onRestart();
Intent intent = new Intent(getApplicationContext(), EnterPasswordActivity.class);
startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/../
}
/../
@Override
public void recyclerViewListClicked(View v, int position) {
String item = apps.get(position).getName();
// This is the switch to second activity in app, and i must return
// from it witout entering password again
Intent i = new Intent(getApplicationContext(), DetailedAppInfoActivity.class);
i.putExtra("appName", item);
startActivity(i);
}
}
我的输入密码活动
public class EnterPasswordActivity extends AppCompatActivity {
EditText enterPass;
Button button;
String pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_enter_password);
SharedPreferences settings = getSharedPreferences("PREFS",0);
pass = settings.getString("password","");
enterPass = findViewById(R.id.mainPassEditText);
button = findViewById(R.id.confirmPassButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String enteredPass = enterPass.getText().toString();
if(enteredPass.equals(pass)){
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
finish();
} else{
Toast.makeText(EnterPasswordActivity.this,"Incorrect password",Toast.LENGTH_SHORT).show();
}
}
});
}
}
更新:我已阅读this article,现在我可以控制我的应用前往后台。但是现在我在哪里调用startActivity()?我不能从App类调用它,它说"从Activity上下文之外调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?"
答案 0 :(得分:0)
基本上,您需要跟踪应用程序到达前台时的情况,为此您需要跟踪应用程序生命周期事件。为此,您需要创建一个Handler类来检测应用程序的背景和前景状态,即要执行操作的Application类。
此blog将帮助您跟踪该事件