您可以在您拥有的每个 Activity 的“onStart”中放置一个条件语句,而不是使用 clearTaskOnLaunch。
例子:
if (pref.getBoolean("requiresPassword", false)){
startActivity(new Intent(context, SplashScreen.class));
}
为了使代码更便携,更容易放置在每个 Activity 中,我创建了一个包含多个方法的类,例如:
public class M {
public static void check(final Context context){
//do the shared prefs getting and startActivity from here.
}
}
然后在您的onStart 中,对于每个Activity,您所要做的就是M.check(this);
编辑:
作为Scienceprodigy,上述情况会导致无限循环。我没想到。
我实际上要做的是创建一个对话框弹出窗口,要求输入如下密码:
public static void requestPassword(final Context context){
final SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
final Activity activity = (Activity)context;
boolean requestPassword = pref.getBoolean("appLock", false);
// Log.i(tag, String.valueOf(requestPassword));
if (!requestPassword){
return;
}
final EditText myPass2 = new EditText(context);
new AlertDialog.Builder(context)
.setTitle("Enter Password")
.setView(myPass2)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
String secPass = pref.getString("secPassword", "password");
String entPass = myPass2.getText().toString();
if (entPass.equals(secPass)){
myPass2.setText("");
saveTime(context);
} else {
Toast.makeText((Activity)context, "Incorrect Password", Toast.LENGTH_SHORT).show();
myPass2.setText("");
activity.finish();
}
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
myPass2.setText("");
activity.finish();
}
})
.setCancelable(true)
.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
myPass2.setText("");
activity.finish();
}
})
.show();
}