From b3e11be230cfe2cbfc3baac30b13e22ee0e1641e Mon Sep 17 00:00:00 2001 From: Lifu Tang Date: Mon, 10 Aug 2015 12:52:39 -0700 Subject: Created new task when launching injected activity Bug: 22320782 Change-Id: I6cf1e4976a097c4c40afcc4c73f7f9904e9e7aac --- src/com/android/settings/location/SettingsInjector.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/com/android/settings/location/SettingsInjector.java') 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; } -- cgit v1.2.3