OSDN Git Service

Fixed intents to start Settings activities
authorGilles Debunne <debunne@google.com>
Wed, 6 Jul 2011 20:10:16 +0000 (13:10 -0700)
committerGilles Debunne <debunne@google.com>
Thu, 7 Jul 2011 15:45:46 +0000 (08:45 -0700)
All tested, on tablet and on phone.

Change-Id: I8ab206b9db61c7c3800fe9bff175e87baf97ed7c

AndroidManifest.xml
src/com/android/settings/Settings.java
src/com/android/settings/accounts/AccountSyncSettings.java

index 90b092f..5c5e588 100644 (file)
@@ -62,8 +62,7 @@
                 android:label="@string/settings_label_launcher"
                 android:taskAffinity="com.android.settings"
                 android:theme="@android:style/Theme.Holo"
-                android:launchMode="singleTask"
-                >
+                android:launchMode="singleTask">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.SETTINGS" />
@@ -74,8 +73,7 @@
 
         <activity android:name=".SubSettings"
                 android:taskAffinity="com.android.settings"
-                android:theme="@android:style/Theme.Holo"
-                >
+                android:theme="@android:style/Theme.Holo">
         </activity>
 
         <activity android:name="CreateShortcut" android:label="@string/settings_shortcut"
@@ -90,8 +88,7 @@
 
         <activity android:name="Settings$WirelessSettingsActivity"
                 android:theme="@android:style/Theme.Holo"
-                android:label="@string/wireless_networks_settings_title"
-                >
+                android:label="@string/wireless_networks_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.WIRELESS_SETTINGS" />
         <activity android:name="Settings$WifiSettingsActivity"
                 android:theme="@android:style/Theme.Holo"
                 android:label="@string/wifi_settings"
-                android:configChanges="orientation|keyboardHidden"
-                android:clearTaskOnLaunch="true"
-                >
+                android:configChanges="orientation|keyboardHidden|screenSize"
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.WIFI_SETTINGS" />
             <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" />
+                android:resource="@id/wifi_settings" />
         </activity>
 
         <activity android:name=".wifi.WifiPickerActivity"
                   android:windowSoftInputMode="adjustResize"
                   android:exported="true" />
 
-        <activity-alias android:name=".wifi.AdvancedWifiSettings"
-                android:label="@string/wifi_advanced_settings_label"
-                android:targetActivity="Settings"
-                >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <action android:name="android.settings.WIFI_IP_SETTINGS" />
-                <category android:name="android.intent.category.VOICE_LAUNCH" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
-        </activity-alias>
-
-        <activity-alias android:name=".wifi.AdvancedSettings"
+        <activity android:name="Settings$AdvancedWifiSettingsActivity"
+                android:theme="@android:style/Theme.Holo"
                 android:label="@string/wifi_advanced_settings_label"
-                android:targetActivity="Settings"
-                >
+                android:configChanges="orientation|keyboardHidden|screenSize"
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.WIFI_IP_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.wifi.AdvancedWifiSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/wifi_settings" />
+        </activity>
 
         <activity android:name=".wifi.WifiInfo"
                 android:theme="@android:style/Theme.Holo.DialogWhenLarge">
             </intent-filter>
         </activity>
 
+        <!-- Suspect activity alias: targetActivity is Settings itself, does not define a name. Remove? -->
         <activity-alias android:name=".wifi.WifiApSettings"
                 android:targetActivity="Settings">
             <intent-filter>
         </activity-alias>
 
         <activity android:name="ApnSettings" android:label="@string/apn_settings"
-                  android:configChanges="orientation|keyboardHidden"
-                  android:launchMode="singleTask"
-                >
+                  android:configChanges="orientation|keyboardHidden|screenSize"
+                  android:launchMode="singleTask">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.APN_SETTINGS" />
             <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" />
+                android:resource="@id/bluetooth_settings" />
         </activity>
 
-        <activity-alias android:name=".bluetooth.AdvancedBluetoothSettings"
+        <activity android:name="Settings$AdvancedBluetoothSettingsActivity"
                 android:label="@string/bluetooth_advanced_settings_label"
-                android:targetActivity="Settings"
-                >
+                android:targetActivity="Settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.ADVANCED_BLUETOOTH_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.bluetooth.AdvancedBluetoothSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/bluetooth_settings" />
+        </activity>
 
         <activity android:name=".bluetooth.DevicePickerActivity"
                 android:theme="@android:style/Theme.Holo.DialogWhenLarge"
 
         <activity android:name="Settings$DateTimeSettingsActivity"
                 android:theme="@android:style/Theme.Holo"
-                android:label="@string/date_and_time" >
+                android:label="@string/date_and_time">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.DATE_SETTINGS" />
         <activity android:name="Settings$DisplaySettingsActivity"
                 android:theme="@android:style/Theme.Holo"
                 android:label="@string/display_settings"
-                android:clearTaskOnLaunch="true"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.settings.DISPLAY_SETTINGS" />
         <activity android:name="SettingsLicenseActivity"
                 android:label="@string/settings_license_activity_title"
                 android:theme="@*android:style/Theme.Holo.Dialog.Alert"
-                android:configChanges="orientation">
+                android:configChanges="orientation|screenSize">
             <intent-filter>
                 <action android:name="android.settings.LICENSE" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
 
-        <activity android:name="Settings$ApplicationSettingsActivity"
-                android:theme="@android:style/Theme.Holo"
-                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>
-            <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 android:name="Settings$ManageApplicationsActivity"
                 android:theme="@android:style/Theme.Holo"
                 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" />
+                <action android:name="android.settings.APPLICATION_SETTINGS" />
                 <action android:name="android.settings.MANAGE_APPLICATIONS_SETTINGS" />
                 <action android:name="android.settings.MANAGE_ALL_APPLICATIONS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 android:value="com.android.settings.applications.ManageApplications" />
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                 android:resource="@id/application_settings" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_TITLE"
-                android:resource="@string/applications_settings_header" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_CLASS"
-                android:value="com.android.settings.Settings$ApplicationSettingsActivity" />
         </activity>
 
         <!-- Keep compatibility with old shortcuts. -->
                   android:label="@string/application_info_label"
                   android:exported="true">
         </activity>
+
         <activity-alias android:name=".applications.InstalledAppDetails"
                   android:label="@string/application_info_label"
                   android:targetActivity=".applications.InstalledAppDetailsTop">
                 android:value="com.android.settings.applications.ManageApplications" />
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                 android:resource="@id/application_settings" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_TITLE"
-                android:resource="@string/applications_settings_header" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_CLASS"
-                android:value="com.android.settings.Settings$ApplicationSettingsActivity" />
         </activity>
 
         <!-- Provide direct entry into manage apps showing running services. -->
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
+                <action android:name="android.intent.action.MANAGE_PACKAGE_STORAGE" />
                 <category android:name="android.intent.category.MONKEY" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
                 <category android:name="com.android.settings.SHORTCUT" />
                 android:value="com.android.settings.applications.ManageApplications" />
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                 android:resource="@id/application_settings" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_TITLE"
-                android:resource="@string/applications_settings_header" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_CLASS"
-                android:value="com.android.settings.Settings$ApplicationSettingsActivity" />
         </activity>
 
         <activity android:name="Settings$LocationSettingsActivity"
                 android:theme="@android:style/Theme.Holo"
                 android:label="@string/location_settings_title"
-                android:configChanges="orientation|keyboardHidden"
+                android:configChanges="orientation|keyboardHidden|screenSize"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
         <activity android:name="Settings$SecuritySettingsActivity"
                 android:theme="@android:style/Theme.Holo"
                 android:label="@string/security_settings_title"
-                android:configChanges="orientation|keyboardHidden"
+                android:configChanges="orientation|keyboardHidden|screenSize"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
         <activity android:name="Settings$PrivacySettingsActivity"
                 android:theme="@android:style/Theme.Holo"
                 android:label="@string/privacy_settings_title"
-                android:configChanges="orientation|keyboardHidden"
+                android:configChanges="orientation|keyboardHidden|screenSize"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.PRIVACY_SETTINGS" />
+                <action android:name="android.settings.BACKUP_AND_RESET_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
 
         <activity android:name="CredentialStorage"
                 android:theme="@style/Transparent"
-                android:configChanges="orientation|keyboardHidden">
+                android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter>
                 <action android:name="com.android.credentials.UNLOCK" />
                 <action android:name="com.android.credentials.INSTALL" />
         <activity android:name="Settings$DeviceAdminSettingsActivity"
                 android:label="@string/device_admin_settings_title"
                 android:theme="@android:style/Theme.Holo"
-                android:clearTaskOnLaunch="true"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
         <activity android:name="DeviceAdminAdd"
                 android:label="@string/device_admin_add_title"
                 android:theme="@android:style/Theme.Holo.DialogWhenLarge"
-                android:clearTaskOnLaunch="true"
-                >
+                android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.app.action.ADD_DEVICE_ADMIN" />
                 <category android:name="android.intent.category.DEFAULT" />
                 android:resource="@id/accessibility_settings" />
         </activity>
 
-        <activity android:name="TextToSpeechSettings" android:label="@string/tts_settings">
+        <activity android:name="Settings$TextToSpeechSettingsActivity"
+                android:label="@string/tts_settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="com.android.settings.TTS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.TextToSpeechSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/language_settings" />
         </activity>
 
         <!-- Second and third-level settings -->
             <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" />
+                android:resource="@id/development_settings" />
         </activity>
 
         <activity-alias android:name="DevelopmentSettings"
                   android:exported="true"
                   android:label="@string/development_settings_title"
                   android:targetActivity="Settings$DevelopmentSettingsActivity">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <action android:name="android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
-                <action android:name="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
-                <category android:name="android.intent.category.DEFAULT" />
-            </intent-filter>
             <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" />
+                android:resource="@id/development_settings" />
         </activity-alias>
 
 
             </intent-filter>
         </activity>
 
+        <!-- Suspect activity alias: targetActivity is Settings itself, does not define a name. Remove? -->
         <activity-alias android:name="ProxySelector"
             android:label="@string/proxy_settings_label"
             android:targetActivity="Settings">
                 android:value="com.android.settings.fuelgauge.PowerUsageSummary" />
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                 android:resource="@id/application_settings" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_TITLE"
-                android:resource="@string/applications_settings_header" />
-            <meta-data android:name="com.android.settings.PARENT_FRAGMENT_CLASS"
-                android:value="com.android.settings.Settings$ApplicationSettingsActivity" />
         </activity>
 
         <activity
index 16531e3..b982606 100644 (file)
@@ -567,4 +567,7 @@ public class Settings extends PreferenceActivity implements ButtonBarHandler {
     public static class CryptKeeperSettingsActivity extends Settings { /* empty */ }
     public static class DeviceAdminSettingsActivity extends Settings { /* empty */ }
     public static class DataUsageSummaryActivity extends Settings { /* empty */ }
+    public static class AdvancedWifiSettingsActivity extends Settings { /* empty */ }
+    public static class AdvancedBluetoothSettingsActivity extends Settings { /* empty */ }
+    public static class TextToSpeechSettingsActivity extends Settings { /* empty */ }
 }
index 9ef0481..547b0e1 100644 (file)
 
 package com.android.settings.accounts;
 
-import com.android.settings.R;
-import com.google.android.collect.Lists;
-import com.google.android.collect.Maps;
-
 import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.accounts.AccountManagerCallback;
@@ -53,6 +49,10 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.android.settings.R;
+import com.google.android.collect.Lists;
+import com.google.android.collect.Maps;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -175,7 +175,13 @@ public class AccountSyncSettings extends AccountPreferenceBase {
         mDateFormat = DateFormat.getDateFormat(activity);
         mTimeFormat = DateFormat.getTimeFormat(activity);
 
-        mAccount = (Account) getArguments().getParcelable(ACCOUNT_KEY);
+        Bundle arguments = getArguments();
+        if (arguments == null) {
+            Log.e(TAG, "No arguments provided when starting intent. ACCOUNT_KEY needed.");
+            return;
+        }
+
+        mAccount = (Account) arguments.getParcelable(ACCOUNT_KEY);
         if (mAccount != null) {
             if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "Got account: " + mAccount);
             mUserId.setText(mAccount.name);
@@ -486,11 +492,13 @@ public class AccountSyncSettings extends AccountPreferenceBase {
     protected void onAuthDescriptionsUpdated() {
         super.onAuthDescriptionsUpdated();
         getPreferenceScreen().removeAll();
-        mProviderIcon.setImageDrawable(getDrawableForType(mAccount.type));
-        mProviderId.setText(getLabelForType(mAccount.type));
-        PreferenceScreen prefs = addPreferencesForType(mAccount.type);
-        if (prefs != null) {
-            updatePreferenceIntents(prefs);
+        if (mAccount != null) {
+            mProviderIcon.setImageDrawable(getDrawableForType(mAccount.type));
+            mProviderId.setText(getLabelForType(mAccount.type));
+            PreferenceScreen prefs = addPreferencesForType(mAccount.type);
+            if (prefs != null) {
+                updatePreferenceIntents(prefs);
+            }
         }
         addPreferencesFromResource(R.xml.account_sync_settings);
     }