Fix launching of specific settings.
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 738acc3..de1a63c 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -17,6 +17,7 @@
 package com.android.settings;
 
 import android.app.Fragment;
+import android.content.Intent;
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
 
@@ -31,6 +32,32 @@
     // TODO: Update Call Settings based on airplane mode state.
 
     /**
+     * Checks if the component name in the intent is different from the Settings class and
+     * returns the class name to load as a fragment.
+     */
+    private String getStartingFragmentClass(Intent intent) {
+        final String intentClass = intent.getComponent().getClassName();
+        if (intentClass.equals(getClass().getName())) return null;
+
+        return intentClass;
+    }
+
+    /**
+     * Override initial header when an activity-alias is causing Settings to be launched
+     * for a specific fragment encoded in the android:name parameter.
+     */
+    @Override
+    public Header onGetInitialHeader() {
+        String fragmentClass = getStartingFragmentClass(super.getIntent());
+        if (fragmentClass != null) {
+            Header header = new Header();
+            header.fragment = fragmentClass;
+            return header;
+        }
+        return super.onGetInitialHeader();
+    }
+
+    /**
      * Populate the activity with the top-level headers.
      */
     @Override