Merge "Fix bug #13058470 Cannot add account -- Settings app crashes"

This commit is contained in:
Fabrice Di Meglio
2014-02-21 00:22:16 +00:00
committed by Android (Google) Code Review
5 changed files with 17 additions and 22 deletions

View File

@@ -1535,12 +1535,10 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name="com.android.settings.Settings$ChooseAccountActivity" <activity android:name="com.android.settings.accounts.ChooseAccountActivity"
android:label="@string/header_add_an_account" android:label="@string/header_add_an_account"
android:configChanges="orientation|keyboardHidden|screenSize"> android:configChanges="orientation|keyboardHidden|screenSize"
<meta-data android:name="com.android.settings.FRAGMENT_CLASS" android:theme="@android:style/Theme.Holo.DialogWhenLarge"/>
android:value="com.android.settings.accounts.ChooseAccountFragment" />
</activity>
<activity android:name=".CryptKeeper" <activity android:name=".CryptKeeper"
android:immersive="true" android:immersive="true"

View File

@@ -67,7 +67,6 @@ public class Settings extends SettingsActivity {
public static class RunningServicesActivity extends SettingsActivity { /* empty */ } public static class RunningServicesActivity extends SettingsActivity { /* empty */ }
public static class ManageAccountsSettingsActivity extends SettingsActivity { /* empty */ } public static class ManageAccountsSettingsActivity extends SettingsActivity { /* empty */ }
public static class PowerUsageSummaryActivity extends SettingsActivity { /* empty */ } public static class PowerUsageSummaryActivity extends SettingsActivity { /* empty */ }
public static class ChooseAccountActivity extends SettingsActivity { /* empty */ }
public static class AccountSyncSettingsActivity extends SettingsActivity { /* empty */ } public static class AccountSyncSettingsActivity extends SettingsActivity { /* empty */ }
public static class AccountSyncSettingsInAddAccountActivity extends SettingsActivity { /* empty */ } public static class AccountSyncSettingsInAddAccountActivity extends SettingsActivity { /* empty */ }
public static class CryptKeeperSettingsActivity extends SettingsActivity { /* empty */ } public static class CryptKeeperSettingsActivity extends SettingsActivity { /* empty */ }

View File

@@ -86,7 +86,6 @@ import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.CaptionPropertiesFragment; import com.android.settings.accessibility.CaptionPropertiesFragment;
import com.android.settings.accounts.AccountSyncSettings; import com.android.settings.accounts.AccountSyncSettings;
import com.android.settings.accounts.AuthenticatorHelper; import com.android.settings.accounts.AuthenticatorHelper;
import com.android.settings.accounts.ChooseAccountFragment;
import com.android.settings.accounts.ManageAccountsSettings; import com.android.settings.accounts.ManageAccountsSettings;
import com.android.settings.applications.ManageApplications; import com.android.settings.applications.ManageApplications;
import com.android.settings.applications.ProcessStatsUi; import com.android.settings.applications.ProcessStatsUi;
@@ -278,7 +277,6 @@ public class SettingsActivity extends Activity
TrustedCredentialsSettings.class.getName(), TrustedCredentialsSettings.class.getName(),
PaymentSettings.class.getName(), PaymentSettings.class.getName(),
KeyboardLayoutPickerFragment.class.getName(), KeyboardLayoutPickerFragment.class.getName(),
ChooseAccountFragment.class.getName(),
DashboardSummary.class.getName() DashboardSummary.class.getName()
}; };

View File

@@ -143,7 +143,7 @@ public class AddAccountSettings extends Activity {
getIntent().getStringArrayExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY); getIntent().getStringArrayExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY);
final String[] accountTypes = final String[] accountTypes =
getIntent().getStringArrayExtra(AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY); getIntent().getStringArrayExtra(AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY);
final Intent intent = new Intent(this, Settings.ChooseAccountActivity.class); final Intent intent = new Intent(this, ChooseAccountActivity.class);
if (authorities != null) { if (authorities != null) {
intent.putExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY, authorities); intent.putExtra(AccountPreferenceBase.AUTHORITIES_FILTER_KEY, authorities);
} }

View File

@@ -18,7 +18,6 @@ package com.android.settings.accounts;
import android.accounts.AccountManager; import android.accounts.AccountManager;
import android.accounts.AuthenticatorDescription; import android.accounts.AuthenticatorDescription;
import android.app.Activity;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@@ -28,12 +27,12 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.util.Log; import android.util.Log;
import com.android.internal.util.CharSequences; import com.android.internal.util.CharSequences;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.google.android.collect.Maps; import com.google.android.collect.Maps;
import java.util.ArrayList; import java.util.ArrayList;
@@ -45,9 +44,9 @@ import java.util.Map;
/** /**
* Activity asking a user to select an account to be set up. * Activity asking a user to select an account to be set up.
*/ */
public class ChooseAccountFragment extends SettingsPreferenceFragment { public class ChooseAccountActivity extends PreferenceActivity {
private static final String TAG = "ChooseAccountFragment"; private static final String TAG = "ChooseAccountActivity";
private String[] mAuthorities; private String[] mAuthorities;
private PreferenceGroup mAddAccountGroup; private PreferenceGroup mAddAccountGroup;
private final ArrayList<ProviderEntry> mProviderList = new ArrayList<ProviderEntry>(); private final ArrayList<ProviderEntry> mProviderList = new ArrayList<ProviderEntry>();
@@ -77,13 +76,14 @@ public class ChooseAccountFragment extends SettingsPreferenceFragment {
} }
@Override @Override
public void onCreate(Bundle icicle) { protected void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
setContentView(R.layout.add_account_screen);
addPreferencesFromResource(R.xml.add_account_settings); addPreferencesFromResource(R.xml.add_account_settings);
mAuthorities = getActivity().getIntent().getStringArrayExtra( mAuthorities = getIntent().getStringArrayExtra(
AccountPreferenceBase.AUTHORITIES_FILTER_KEY); AccountPreferenceBase.AUTHORITIES_FILTER_KEY);
String[] accountTypesFilter = getActivity().getIntent().getStringArrayExtra( String[] accountTypesFilter = getIntent().getStringArrayExtra(
AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY); AccountPreferenceBase.ACCOUNT_TYPES_FILTER_KEY);
if (accountTypesFilter != null) { if (accountTypesFilter != null) {
mAccountTypesFilter = new HashSet<String>(); mAccountTypesFilter = new HashSet<String>();
@@ -100,7 +100,7 @@ public class ChooseAccountFragment extends SettingsPreferenceFragment {
* and update any UI that depends on AuthenticatorDescriptions in onAuthDescriptionsUpdated(). * and update any UI that depends on AuthenticatorDescriptions in onAuthDescriptionsUpdated().
*/ */
private void updateAuthDescriptions() { private void updateAuthDescriptions() {
mAuthDescs = AccountManager.get(getActivity()).getAuthenticatorTypes(); mAuthDescs = AccountManager.get(this).getAuthenticatorTypes();
for (int i = 0; i < mAuthDescs.length; i++) { for (int i = 0; i < mAuthDescs.length; i++) {
mTypeToAuthDescription.put(mAuthDescs[i].type, mAuthDescs[i]); mTypeToAuthDescription.put(mAuthDescs[i].type, mAuthDescs[i]);
} }
@@ -148,7 +148,7 @@ public class ChooseAccountFragment extends SettingsPreferenceFragment {
for (ProviderEntry pref : mProviderList) { for (ProviderEntry pref : mProviderList) {
Drawable drawable = getDrawableForType(pref.type); Drawable drawable = getDrawableForType(pref.type);
ProviderPreference p = ProviderPreference p =
new ProviderPreference(getActivity(), pref.type, drawable, pref.name); new ProviderPreference(this, pref.type, drawable, pref.name);
mAddAccountGroup.addPreference(p); mAddAccountGroup.addPreference(p);
} }
} else { } else {
@@ -160,7 +160,7 @@ public class ChooseAccountFragment extends SettingsPreferenceFragment {
} }
Log.v(TAG, "No providers found for authorities: " + auths); Log.v(TAG, "No providers found for authorities: " + auths);
} }
getActivity().setResult(Activity.RESULT_CANCELED); setResult(RESULT_CANCELED);
finish(); finish();
} }
} }
@@ -196,7 +196,7 @@ public class ChooseAccountFragment extends SettingsPreferenceFragment {
if (mTypeToAuthDescription.containsKey(accountType)) { if (mTypeToAuthDescription.containsKey(accountType)) {
try { try {
AuthenticatorDescription desc = mTypeToAuthDescription.get(accountType); AuthenticatorDescription desc = mTypeToAuthDescription.get(accountType);
Context authContext = getActivity().createPackageContext(desc.packageName, 0); Context authContext = createPackageContext(desc.packageName, 0);
icon = authContext.getResources().getDrawable(desc.iconId); icon = authContext.getResources().getDrawable(desc.iconId);
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
// TODO: place holder icon for missing account icons? // TODO: place holder icon for missing account icons?
@@ -219,7 +219,7 @@ public class ChooseAccountFragment extends SettingsPreferenceFragment {
if (mTypeToAuthDescription.containsKey(accountType)) { if (mTypeToAuthDescription.containsKey(accountType)) {
try { try {
AuthenticatorDescription desc = mTypeToAuthDescription.get(accountType); AuthenticatorDescription desc = mTypeToAuthDescription.get(accountType);
Context authContext = getActivity().createPackageContext(desc.packageName, 0); Context authContext = createPackageContext(desc.packageName, 0);
label = authContext.getResources().getText(desc.labelId); label = authContext.getResources().getText(desc.labelId);
} catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) {
Log.w(TAG, "No label name for account type " + accountType); Log.w(TAG, "No label name for account type " + accountType);
@@ -245,7 +245,7 @@ public class ChooseAccountFragment extends SettingsPreferenceFragment {
private void finishWithAccountType(String accountType) { private void finishWithAccountType(String accountType) {
Intent intent = new Intent(); Intent intent = new Intent();
intent.putExtra(AddAccountSettings.EXTRA_SELECTED_ACCOUNT, accountType); intent.putExtra(AddAccountSettings.EXTRA_SELECTED_ACCOUNT, accountType);
getActivity().setResult(Activity.RESULT_OK, intent); setResult(RESULT_OK, intent);
finish(); finish();
} }
} }