除了使用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,上述將導致無限循環。我沒有想到這一點。
我實際上做的是創建一個對話框彈出要求輸入密碼,就像這樣:
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();
}
這將創建一個口令檢查的無限循環,輸入密碼,然後密碼檢查等 –
@Scienceprodigy我更新了我的答案,使用AlertDialog,而不是啓動的閃屏。這可能不完全是你想要的,但從用戶的角度來看,如果嘗試多任務,我更喜歡一個對話框。這似乎更容易。當然,如果更適合你,你可以使用用XML定義的自定義佈局。 – Jakar