summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/settings/location/SettingsInjector.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/com/android/settings/location/SettingsInjector.java b/src/com/android/settings/location/SettingsInjector.java
index 283430e3cd..153deffd4d 100644
--- a/src/com/android/settings/location/SettingsInjector.java
+++ b/src/com/android/settings/location/SettingsInjector.java
@@ -299,7 +299,17 @@ class SettingsInjector {
// Settings > Location.
Intent settingIntent = new Intent();
settingIntent.setClassName(mInfo.packageName, mInfo.settingsActivity);
- settingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ // Sometimes the user may navigate back to "Settings" and launch another different
+ // injected setting after one injected setting has been launched.
+ //
+ // FLAG_ACTIVITY_CLEAR_TOP allows multiple Activities to stack on each other. When
+ // "back" button is clicked, the user will navigate through all the injected settings
+ // launched before. Such behavior could be quite confusing sometimes.
+ //
+ // In order to avoid such confusion, we use FLAG_ACTIVITY_CLEAR_TASK, which always clear
+ // up all existing injected settings and make sure that "back" button always brings the
+ // user back to "Settings" directly.
+ settingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
mContext.startActivityAsUser(settingIntent, mInfo.mUserHandle);
return true;
}