Create activity wrappers for settings launchable through intents or shortcuts.

Meta data specifies the fragment class and top-level header that it belongs to.

Bug: 3127704
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 4729785..2462725 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -52,7 +52,7 @@
         <activity android:name="Settings"
                 android:label="@string/settings_label_launcher"
                 android:taskAffinity="com.android.settings"
-                android:theme="@android:style/Theme.Holo"
+                android:theme="@android:style/Theme.Holo.Extended"
                 >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -71,9 +71,9 @@
 
         <!-- Wireless Controls -->
 
-        <activity-alias android:name="WirelessSettings"
+        <activity android:name="Settings$WirelessSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/wireless_networks_settings_title"
-                android:targetActivity="Settings"
                 >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -82,16 +82,20 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.WirelessSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/wireless_settings" />
+        </activity>
 
 
         <!-- Top-level settings -->
 
-        <activity-alias android:name=".wifi.WifiSettings"
+        <activity android:name="Settings$WifiSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/wifi_settings"
                 android:configChanges="orientation|keyboardHidden"
                 android:clearTaskOnLaunch="true"
-                android:targetActivity="Settings"
                 >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -101,7 +105,11 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.wifi.WifiSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/wireless_settings" />
+        </activity>
 
         <activity android:name=".wifi.WifiSettingsForSetupWizardXL"
                   android:theme="@android:style/Theme.Holo.NoActionBar"
@@ -174,11 +182,10 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name=".bluetooth.BluetoothSettings"
-                  android:label="@string/bluetooth_settings_title"
-                  android:clearTaskOnLaunch="true"
-                  android:targetActivity="Settings"
-                  >
+        <activity android:name="Settings$BluetoothSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/bluetooth_settings_title"
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.BLUETOOTH_SETTINGS" />
@@ -190,22 +197,31 @@
                 <action android:name="android.bluetooth.devicepicker.action.LAUNCH" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.bluetooth.BluetoothSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/wireless_settings" />
+        </activity>
 
-        <activity-alias android:name=".TetherSettings"
-            android:clearTaskOnLaunch="true"
-            android:targetActivity="Settings">
+        <activity android:name="Settings$TetherSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.TetherSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/wireless_settings" />
+        </activity>
 
-        <activity-alias android:name=".vpn.VpnSettings"
+        <activity android:name="Settings$VpnSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/vpn_settings_activity_title"
                 android:configChanges="orientation|keyboardHidden"
-                android:clearTaskOnLaunch="true"
-                android:targetActivity="Settings">
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.net.vpn.SETTINGS" />
@@ -213,19 +229,26 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.vpn.VpnSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/wireless_settings" />
+        </activity>
 
-        <activity-alias android:name="DateTimeSettings"
-                android:label="@string/date_and_time"
-                android:targetActivity="Settings"
-                >
+        <activity android:name="Settings$DateTimeSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/date_and_time" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.DATE_SETTINGS" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.DateTimeSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/date_time_settings" />
+        </activity>
 
         <activity android:name="DateTimeSettingsSetupWizard"
                   android:label="@string/date_and_time"
@@ -236,23 +259,26 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name="LocalePicker"
-                        android:label="@string/language_picker_title"
-                        android:clearTaskOnLaunch="true"
-                        android:targetActivity="Settings">
+        <activity android:name="Settings$LocalePickerActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/language_picker_title"
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.LOCALE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.LocalePicker" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/language_settings" />
+        </activity>
 
-        <activity-alias android:name=".inputmethod.InputMethodAndLanguageSettings"
+        <activity android:name="Settings$InputMethodAndLanguageSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/language_keyboard_settings_title"
-                android:clearTaskOnLaunch="true"
-                android:targetActivity="Settings"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.INPUT_METHOD_SETTINGS" />
@@ -260,12 +286,16 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.inputmethod.InputMethodAndLanguageSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/language_settings" />
+        </activity>
 
-        <activity-alias android:name=".inputmethod.InputMethodAndSubtypeEnabler"
-                        android:label="@string/input_methods_and_subtype_enabler_title"
-                        android:clearTaskOnLaunch="true"
-                        android:targetActivity="Settings">
+        <activity android:name="Settings$InputMethodAndSubtypeEnablerActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/input_methods_and_subtype_enabler_title"
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.INPUT_METHOD_AND_SUBTYPE_ENABLER" />
@@ -273,7 +303,11 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.inputmethod.InputMethodAndSubtypeEnabler" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/language_settings" />
+        </activity>
 
         <activity android:name="PhysicalKeyboardSettings"
                 android:label="@string/builtin_keyboard_settings_title">
@@ -283,7 +317,8 @@
             </intent-filter>
         </activity>
 
-        <activity android:name="UserDictionarySettings"
+        <activity android:name="Settings$UserDictionarySettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/user_dict_settings_titlebar"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
@@ -294,13 +329,16 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.UserDictionarySettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/language_settings" />
         </activity>
 
-        <activity-alias android:name="SoundSettings"
+        <activity android:name="Settings$SoundSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/sound_settings"
-                android:clearTaskOnLaunch="true"
-                android:targetActivity="Settings"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.settings.SOUND_SETTINGS" />
@@ -309,11 +347,15 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.SoundSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/sound_settings" />
+        </activity>
 
-        <activity-alias android:name="DisplaySettings"
+        <activity android:name="Settings$DisplaySettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/display_settings"
-                android:targetActivity="Settings"
                 android:clearTaskOnLaunch="true"
                 >
             <intent-filter>
@@ -324,13 +366,16 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.DisplaySettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/display_settings" />
+        </activity>
 
-        <activity-alias android:name="DockSettings"
+        <activity android:name="Settings$DockSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/dock_settings_title"
-                android:clearTaskOnLaunch="true"
-                android:targetActivity="Settings"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.settings.DOCK_SETTINGS" />
@@ -338,19 +383,26 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.DockSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/dock_settings" />
+        </activity>
 
-        <activity-alias android:name="DeviceInfoSettings"
-                android:label="@string/device_info_settings"
-                android:targetActivity="Settings"
-                >
+        <activity android:name="Settings$DeviceInfoSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/device_info_settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.DEVICE_INFO_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.DeviceInfoSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/about_settings" />
+        </activity>
 
         <activity android:name="SettingsLicenseActivity"
                 android:label="@string/settings_license_activity_title"
@@ -370,22 +422,25 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name="ApplicationSettings"
-                android:label="@string/applications_settings_header"
-                android:targetActivity="Settings"
-                >
+        <activity android:name="Settings$ApplicationSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/applications_settings_header">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.APPLICATION_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.ApplicationSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/application_settings" />
+        </activity>
 
-        <activity-alias android:name=".applications.ManageApplications"
-                  android:label="@string/manageapplications_settings_title"
-                  android:clearTaskOnLaunch="true"
-                  android:targetActivity="Settings">
+        <activity android:name="Settings$ManageApplicationsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/manageapplications_settings_title"
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.intent.action.MANAGE_PACKAGE_STORAGE" />
@@ -395,14 +450,18 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.applications.ManageApplications" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/application_settings" />
+        </activity>
 
         <!-- Keep compatibility with old shortcuts. -->
         <activity-alias android:name=".ManageApplications"
                   android:label="@string/manageapplications_settings_title"
                   android:clearTaskOnLaunch="true"
                   android:exported="true"
-                  android:targetActivity="Settings">
+                  android:targetActivity="Settings$ManageApplicationsActivity">
         </activity-alias>
 
         <!-- Still need a top-level activity for showing app details.  Aliasing
@@ -455,9 +514,9 @@
         -->
 
         <!-- Provide direct entry into manage apps showing running services. -->
-        <activity-alias android:name=".RunningServices"
-                android:label="@string/runningservices_settings_title"
-                android:targetActivity="Settings">
+        <activity android:name="Settings$RunningServicesActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/runningservices_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -465,12 +524,16 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.applications.ManageApplications" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/application_settings" />
+        </activity>
 
         <!-- Provide direct entry into manage apps showing running services. -->
-        <activity-alias android:name=".applications.StorageUse"
-                android:label="@string/storageuse_settings_title"
-                android:targetActivity="Settings">
+        <activity android:name="Settings$StorageUseActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/storageuse_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -478,14 +541,17 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.applications.ManageApplications" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/application_settings" />
+        </activity>
 
-        <activity-alias android:name="SecuritySettings"
+        <activity android:name="Settings$SecuritySettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/location_security_settings_title"
                 android:configChanges="orientation|keyboardHidden"
-                android:targetActivity="Settings"
-                android:clearTaskOnLaunch="true"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.SECURITY_SETTINGS" />
@@ -495,7 +561,11 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.SecuritySettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/security_settings" />
+        </activity>
 
         <activity android:name="CredentialInstaller"
                 android:theme="@android:style/Theme.Translucent.NoTitleBar">
@@ -505,19 +575,22 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name="PrivacySettings"
+        <activity android:name="Settings$PrivacySettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/privacy_settings_title"
                 android:configChanges="orientation|keyboardHidden"
-                android:clearTaskOnLaunch="true"
-                android:targetActivity="Settings"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.PRIVACY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.PrivacySettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/privacy_settings" />
+        </activity>
 
         <activity android:name="DeviceAdminSettings"
                 android:label="@string/device_admin_settings_title"
@@ -552,20 +625,23 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name="AccessibilitySettings"
-                android:label="@string/accessibility_settings_title"
-                android:targetActivity="Settings">
+        <activity android:name="Settings$AccessibilitySettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/accessibility_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.ACCESSIBILITY_SETTINGS" />
-                <!-- Wtf...  this action is bogus!  Can we remove it? -->
-                <action android:name="ACCESSIBILITY_FEEDBACK_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.AccessibilitySettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/accessibility_settings" />
+        </activity>
 
-        <activity-alias android:name="VoiceInputOutputSettings"
+        <activity android:name="Settings$VoiceInputOutputSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/voice_input_output_settings"
                 android:targetActivity="Settings">
             <intent-filter>
@@ -573,7 +649,11 @@
                 <action android:name="com.android.settings.VOICE_INPUT_OUTPUT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.VoiceInputOutputSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/voice_input_output_settings" />
+        </activity>
 
         <activity android:name="TextToSpeechSettings" android:label="@string/tts_settings">
             <intent-filter>
@@ -616,6 +696,7 @@
             android:label="@string/lockpattern_change_lock_pattern_label">
         </activity>
 
+        <!-- Runs in the phone process since it needs access to the Phone object -->
         <activity android:name=".deviceinfo.Status" android:label="@string/device_status_activity_title"
                 android:process="com.android.phone">
             <intent-filter>
@@ -625,8 +706,8 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name=".deviceinfo.Memory"
-                android:targetActivity="Settings"
+        <activity android:name="Settings$StorageSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/storage_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -635,7 +716,11 @@
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.deviceinfo.Memory" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/storage_settings" />
+        </activity>
 
         <activity android:name="ApnEditor" android:label="@string/apn_edit">
             <intent-filter>
@@ -681,17 +766,20 @@
             </intent-filter>
         </activity>
 
-        <activity-alias android:name="DevelopmentSettings"
+        <activity android:name="Settings$DevelopmentSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
                 android:label="@string/development_settings_title"
-                android:targetActivity="Settings"
-                android:clearTaskOnLaunch="true"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.DevelopmentSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/application_settings" />
+        </activity>
 
 
 
@@ -883,16 +971,20 @@
             </intent-filter>
         </activity>
 
-        <activity-alias
-            android:name="ManageAccountsSettings"
-            android:label="@string/sync_settings"
-            android:targetActivity="Settings">
+        <activity
+                android:name="Settings$ManageAccountsSettingsActivity"
+                android:theme="@android:style/Theme.Holo.Extended"
+                android:label="@string/sync_settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.SYNC_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-        </activity-alias>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.ManageAccountsSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/sync_settings" />
+        </activity>
 
         <receiver android:name=".widget.SettingsAppWidgetProvider"
                 android:label="@string/gadget_title" android:exported="false">
diff --git a/res/xml/application_settings.xml b/res/xml/application_settings.xml
index 76fa0bc..2e446a2 100644
--- a/res/xml/application_settings.xml
+++ b/res/xml/application_settings.xml
@@ -53,7 +53,7 @@
             android:fragment="com.android.settings.applications.ManageApplications"
             android:title="@string/runningservices_settings_title"
             android:summary="@string/runningservices_settings_summary">
-        <extra android:name="classname" android:value="com.android.settings.RunningServices" />
+        <extra android:name="classname" android:value="com.android.settings.Settings$RunningServicesActivity" />
     </PreferenceScreen>
 
     <PreferenceScreen
@@ -61,7 +61,7 @@
             android:title="@string/storageuse_settings_title"
             android:summary="@string/storageuse_settings_summary">
         <extra android:name="classname"
-                android:value="com.android.settings.applications.StorageUse" />
+                android:value="com.android.settings.Settings$StorageUseActivity" />
     </PreferenceScreen>
 
     <PreferenceScreen
@@ -75,10 +75,8 @@
 
     <PreferenceScreen 
             android:title="@string/development_settings_title" 
-            android:summary="@string/development_settings_summary">
-        <intent android:action="android.intent.action.MAIN"
-                android:targetPackage="com.android.settings"
-                android:targetClass="com.android.settings.DevelopmentSettings" />
+            android:summary="@string/development_settings_summary"
+            android:fragment="com.android.settings.DevelopmentSettings">
     </PreferenceScreen>
     
 </PreferenceScreen>
diff --git a/res/xml/settings_headers.xml b/res/xml/settings_headers.xml
index 26e3873..5c99c5f 100644
--- a/res/xml/settings_headers.xml
+++ b/res/xml/settings_headers.xml
@@ -36,10 +36,10 @@
     <!-- Wireless controls -->
 
     <header
+        android:id="@+id/wireless_settings"
         android:title="@string/radio_controls_title"
         android:fragment="com.android.settings.WirelessSettings"
-        android:icon="@drawable/ic_settings_wireless">
-    </header>
+        android:icon="@drawable/ic_settings_wireless" />
 
     <!-- Call settings - this is in the phone process -->
 
@@ -56,18 +56,18 @@
     <!-- Sound -->
 
     <header
+        android:id="@+id/sound_settings"
         android:icon="@drawable/ic_settings_sound"
         android:fragment="com.android.settings.SoundSettings"
-        android:title="@string/sound_settings_title">
-    </header>
+        android:title="@string/sound_settings_title" />
 
     <!-- Display -->
 
     <header
+        android:id="@+id/display_settings"
         android:icon="@drawable/ic_settings_display"
         android:fragment="com.android.settings.DisplaySettings"
-        android:title="@string/display_settings_title">
-    </header>
+        android:title="@string/display_settings_title" />
 
     <!-- Security & Location -->
 
@@ -75,8 +75,7 @@
         android:fragment="com.android.settings.SecuritySettings"
         android:icon="@drawable/ic_settings_security"
         android:title="@string/security_settings_title"
-        android:id="@+id/security_settings">
-    </header>
+        android:id="@+id/security_settings" />
 
     <!-- Application Settings -->
 
@@ -84,8 +83,7 @@
         android:fragment="com.android.settings.ApplicationSettings"
         android:icon="@drawable/ic_settings_applications"
         android:title="@string/applications_settings"
-        android:id="@+id/applications_settings">
-    </header>
+        android:id="@+id/application_settings" />
 
     <!-- Data Sync. The settings activity will ensure this is resolved to an
          activity on the system image, otherwise it will remove this
@@ -95,8 +93,7 @@
         android:fragment="com.android.settings.ManageAccountsSettings"
         android:icon="@drawable/ic_settings_sync"
         android:title="@string/sync_settings"
-        android:id="@+id/sync_settings">
-    </header>
+        android:id="@+id/sync_settings" />
 
     <!-- Privacy -->
 
@@ -104,40 +101,39 @@
         android:fragment="com.android.settings.PrivacySettings"
         android:icon="@drawable/ic_settings_privacy"
         android:title="@string/privacy_settings"
-        android:id="@+id/privacy_settings">
-    </header>
+        android:id="@+id/privacy_settings" />
 
     <!-- Storage -->
 
     <header
+        android:id="@+id/storage_settings"
         android:fragment="com.android.settings.deviceinfo.Memory"
         android:icon="@drawable/ic_settings_storage"
-        android:title="@string/storage_settings">
-    </header>
+        android:title="@string/storage_settings" />
 
     <!-- Language -->
 
     <header
+        android:id="@+id/language_settings"
         android:fragment="com.android.settings.inputmethod.InputMethodAndLanguageSettings"
         android:icon="@drawable/ic_settings_language"
-        android:title="@string/language_settings">
-    </header>
+        android:title="@string/language_settings" />
 
     <!-- Voice input & output -->
 
     <header
+        android:id="@+id/voice_input_output_settings"
         android:fragment="com.android.settings.VoiceInputOutputSettings"
         android:icon="@drawable/ic_settings_speech"
-        android:title="@string/voice_input_output_settings">
-    </header>
+        android:title="@string/voice_input_output_settings" />
 
     <!-- Accessibility feedback -->
 
     <header
+        android:id="@+id/accessibility_settings"
         android:fragment="com.android.settings.AccessibilitySettings"
         android:icon="@drawable/ic_settings_accessibility"
-        android:title="@string/accessibility_settings">
-    </header>
+        android:title="@string/accessibility_settings" />
 
     <!-- Dock -->
 
@@ -145,30 +141,30 @@
         android:id="@+id/dock_settings"
         android:fragment="com.android.settings.DockSettings"
         android:icon="@drawable/ic_settings_dock"
-        android:title="@string/dock_settings">
-    </header>
+        android:title="@string/dock_settings" />
 
     <!-- Date & Time -->
 
     <header
+        android:id="@+id/date_time_settings"
         android:fragment="com.android.settings.DateTimeSettings"
         android:icon="@drawable/ic_settings_date_time"
-        android:title="@string/date_and_time_settings_title">
-    </header>
+        android:title="@string/date_and_time_settings_title" />
 
     <!-- Owner info -->
 
     <header
+        android:id="@+id/owner_info_settings"
         android:fragment="com.android.settings.OwnerInfoSettings"
         android:icon="@drawable/ic_settings_about"
-        android:title="@string/owner_info_settings_title">
-    </header>
+        android:title="@string/owner_info_settings_title" />
 
     <!-- About Device -->
 
     <header
+        android:id="@+id/about_settings"
         android:fragment="com.android.settings.DeviceInfoSettings"
         android:icon="@drawable/ic_settings_about"
-        android:title="@string/about_settings">
-    </header>
+        android:title="@string/about_settings" />
+
 </preference-headers>
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 3a6e6d8..bec8241 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -17,9 +17,13 @@
 package com.android.settings;
 
 import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Bundle;
 import android.preference.PreferenceActivity;
 
+import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -27,8 +31,36 @@
  */
 public class Settings extends PreferenceActivity {
 
+    private static final String META_DATA_KEY_HEADER_ID =
+            "com.android.settings.TOP_LEVEL_HEADER_ID";
+    private static final String META_DATA_KEY_FRAGMENT_CLASS =
+            "com.android.settings.FRAGMENT_CLASS";
+
+    private String mFragmentClass;
+    private int mTopLevelHeaderId;
+
     // TODO: Update Call Settings based on airplane mode state.
 
+    protected HashMap<Integer, Integer> mHeaderIndexMap = new HashMap<Integer, Integer>();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        getMetaData();
+        super.onCreate(savedInstanceState);
+
+        // TODO: Do this only if 2-pane mode
+        highlightHeader();
+    }
+
+    private void highlightHeader() {
+        if (mTopLevelHeaderId != 0) {
+            Integer index = mHeaderIndexMap.get(mTopLevelHeaderId);
+            if (index != null) {
+                getListView().setItemChecked(index, true);
+            }
+        }
+    }
+
     @Override
     public Intent getIntent() {
         String startingFragment = getStartingFragmentClass(super.getIntent());
@@ -52,7 +84,9 @@
      * 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) {
+    protected String getStartingFragmentClass(Intent intent) {
+        if (mFragmentClass != null) return mFragmentClass;
+
         String intentClass = intent.getComponent().getClassName();
         if (intentClass.equals(getClass().getName())) return null;
 
@@ -96,7 +130,8 @@
         int i = 0;
         while (i < target.size()) {
             Header header = target.get(i);
-            long id = header.id;
+            // Ids are integers, so downcasting
+            int id = (int) header.id;
             if (id == R.id.dock_settings) {
                 if (!needsDockSettings())
                     target.remove(header);
@@ -106,12 +141,55 @@
                 if (!Utils.isVoiceCapable(this))
                     target.remove(header);
             }
-            if (target.get(i) == header)
+            // Increment if the current one wasn't removed by the Utils code.
+            if (target.get(i) == header) {
+                mHeaderIndexMap.put(id, i);
                 i++;
+            }
         }
     }
 
     private boolean needsDockSettings() {
         return getResources().getBoolean(R.bool.has_dock_settings);
     }
+
+    private void getMetaData() {
+        try {
+            ActivityInfo ai = getPackageManager().getActivityInfo(getComponentName(),
+                    PackageManager.GET_META_DATA);
+            if (ai == null || ai.metaData == null) return;
+            mTopLevelHeaderId = ai.metaData.getInt(META_DATA_KEY_HEADER_ID);
+            mFragmentClass = ai.metaData.getString(META_DATA_KEY_FRAGMENT_CLASS);
+        } catch (NameNotFoundException nnfe) {
+        }
+    }
+
+    /*
+     * Settings subclasses for launching independently.
+     */
+
+    public static class BluetoothSettingsActivity extends Settings { }
+    public static class WirelessSettingsActivity extends Settings { }
+    public static class TetherSettingsActivity extends Settings { }
+    public static class VpnSettingsActivity extends Settings { }
+    public static class DateTimeSettingsActivity extends Settings { }
+    public static class StorageSettingsActivity extends Settings { }
+    public static class WifiSettingsActivity extends Settings { }
+    public static class InputMethodAndLanguageSettingsActivity extends Settings { }
+    public static class InputMethodAndSubtypeEnablerActivity extends Settings { }
+    public static class LocalePickerActivity extends Settings { }
+    public static class UserDictionarySettingsActivity extends Settings { }
+    public static class SoundSettingsActivity extends Settings { }
+    public static class DisplaySettingsActivity extends Settings { }
+    public static class DeviceInfoSettingsActivity extends Settings { }
+    public static class ApplicationSettingsActivity extends Settings { }
+    public static class ManageApplicationsActivity extends Settings { }
+    public static class StorageUseActivity extends Settings { }
+    public static class DevelopmentSettingsActivity extends Settings { }
+    public static class AccessibilitySettingsActivity extends Settings { }
+    public static class SecuritySettingsActivity extends Settings { }
+    public static class PrivacySettingsActivity extends Settings { }
+    public static class DockSettingsActivity extends Settings { }
+    public static class RunningServicesActivity extends Settings { }
+    public static class VoiceInputOutputSettingsActivity extends Settings { }
 }
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 20cf2f9..94283ee 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -16,9 +16,12 @@
 
 package com.android.settings.applications;
 
-import com.android.internal.content.PackageHelper;
 import com.android.settings.R;
+
+import com.android.internal.content.PackageHelper;
 import com.android.settings.applications.ApplicationsState.AppEntry;
+import com.android.settings.Settings.RunningServicesActivity;
+import com.android.settings.Settings.StorageUseActivity;
 
 import android.app.Fragment;
 import android.content.Context;
@@ -519,9 +522,9 @@
         if (className == null) {
             className = intent.getComponent().getClassName();
         }
-        if (className.equals("com.android.settings.RunningServices")) {
+        if (className.equals(RunningServicesActivity.class.getName())) {
             defaultTabTag = TAB_RUNNING;
-        } else if (className.equals("com.android.settings.applications.StorageUse")
+        } else if (className.equals(StorageUseActivity.class.getName())
                 || action.equals(Intent.ACTION_MANAGE_PACKAGE_STORAGE)) {
             mSortOrder = SORT_ORDER_SIZE;
             mFilterApps = FILTER_APPS_ALL;