Directly go to account sync screen if there's only one account for that type.
Bug: 6629330
Change-Id: Ieb2bad131b1580a6b75d970c9a0ea9980580f66d
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 50019a3..5826154 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -439,21 +439,36 @@
List<Header> accountHeaders = new ArrayList<Header>(accountTypes.length);
for (String accountType : accountTypes) {
CharSequence label = mAuthenticatorHelper.getLabelForType(this, accountType);
+ Account[] accounts = AccountManager.get(this).getAccountsByType(accountType);
+ boolean skipToAccount = accounts.length == 1
+ && !mAuthenticatorHelper.hasAccountPreferences(accountType);
Header accHeader = new Header();
accHeader.title = label;
if (accHeader.extras == null) {
accHeader.extras = new Bundle();
}
- accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
- accHeader.breadCrumbTitle = label;
- accHeader.breadCrumbShortTitle = label;
- accHeader.fragment = ManageAccountsSettings.class.getName();
- accHeader.fragmentArguments = new Bundle();
- accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE,
- accountType);
- if (!isMultiPane()) {
- accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_LABEL,
- label.toString());
+ if (skipToAccount) {
+ accHeader.breadCrumbTitleRes = R.string.account_sync_settings_title;
+ accHeader.breadCrumbShortTitleRes = R.string.account_sync_settings_title;
+ accHeader.fragment = AccountSyncSettings.class.getName();
+ accHeader.fragmentArguments = new Bundle();
+ // Need this for the icon
+ accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
+ accHeader.extras.putParcelable(AccountSyncSettings.ACCOUNT_KEY, accounts[0]);
+ accHeader.fragmentArguments.putParcelable(AccountSyncSettings.ACCOUNT_KEY,
+ accounts[0]);
+ } else {
+ accHeader.breadCrumbTitle = label;
+ accHeader.breadCrumbShortTitle = label;
+ accHeader.fragment = ManageAccountsSettings.class.getName();
+ accHeader.fragmentArguments = new Bundle();
+ accHeader.extras.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE, accountType);
+ accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_TYPE,
+ accountType);
+ if (!isMultiPane()) {
+ accHeader.fragmentArguments.putString(ManageAccountsSettings.KEY_ACCOUNT_LABEL,
+ label.toString());
+ }
}
accountHeaders.add(accHeader);
}
@@ -642,8 +657,8 @@
//$FALL-THROUGH$
case HEADER_TYPE_NORMAL:
- if (header.extras != null && header.extras.containsKey(
- ManageAccountsSettings.KEY_ACCOUNT_TYPE)) {
+ if (header.extras != null
+ && header.extras.containsKey(ManageAccountsSettings.KEY_ACCOUNT_TYPE)) {
String accType = header.extras.getString(
ManageAccountsSettings.KEY_ACCOUNT_TYPE);
ViewGroup.LayoutParams lp = holder.icon.getLayoutParams();