Вместо использования clearTaskOnLaunch
вы можете поместить условный оператор в 'onStart' каждого имеющегося у вас действия.
Пример:
if (pref.getBoolean("requiresPassword", false)){
startActivity(new Intent(context, SplashScreen.class));
}
Чтобы сделатькод более переносим и легче разместить в каждом действии, я создаю один отдельный класс, который содержит несколько методов, например:
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, вышеприведенное вызовет цикл infinte.Я не думал об этом.
Что бы я на самом деле сделал, это создал бы всплывающее окно Dialog, запрашивающее пароль, например:
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();
}