Jump to top-level settings when launched from system bar or Settings shortcut.
Bug: 3192808
Also switch back to Theme.Holo, as Theme.Holo.Extended is deprecated.
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 28a0f70..c94a0e1 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -38,6 +38,7 @@
private String mFragmentClass;
private int mTopLevelHeaderId;
+ private Header mFirstHeader;
// TODO: Update Call Settings based on airplane mode state.
@@ -52,6 +53,17 @@
highlightHeader();
}
+ @Override
+ public void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+
+ // If it is not launched from history, then reset to top-level
+ if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0
+ && mFirstHeader != null) {
+ switchToHeader(mFirstHeader);
+ }
+ }
+
private void highlightHeader() {
if (mTopLevelHeaderId != 0) {
Integer index = mHeaderIndexMap.get(mTopLevelHeaderId);
@@ -143,6 +155,8 @@
}
// Increment if the current one wasn't removed by the Utils code.
if (target.get(i) == header) {
+ // Hold on to the first header, when we need to reset to the top-level
+ if (i == 0) mFirstHeader = header;
mHeaderIndexMap.put(id, i);
i++;
}