diff options
author | Baligh Uddin <baligh@google.com> | 2015-07-10 03:01:47 +0000 |
---|---|---|
committer | Baligh Uddin <baligh@google.com> | 2015-07-10 03:01:47 +0000 |
commit | f2d248db8078e716b809e0a17cacdea5c5609bd5 (patch) | |
tree | 7e61e2f5dd7778f078580253cf0de4f66a05f806 /core/java/android/accounts | |
parent | c3b3f46d5fcbd89deeb557556e5a695c3e5349a1 (diff) | |
download | frameworks_base-f2d248db8078e716b809e0a17cacdea5c5609bd5.zip frameworks_base-f2d248db8078e716b809e0a17cacdea5c5609bd5.tar.gz frameworks_base-f2d248db8078e716b809e0a17cacdea5c5609bd5.tar.bz2 |
Revert "Security: AccountChooser shouldn't auto reveal accounts."
This reverts commit c3b3f46d5fcbd89deeb557556e5a695c3e5349a1.
Change-Id: I6d156e1ad82c052606f76644fe6085f14e82a734
Diffstat (limited to 'core/java/android/accounts')
-rw-r--r-- | core/java/android/accounts/AccountManager.java | 68 | ||||
-rw-r--r-- | core/java/android/accounts/ChooseTypeAndAccountActivity.java | 16 |
2 files changed, 21 insertions, 63 deletions
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index aaf90a6..aa7692b 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -43,7 +43,6 @@ import com.google.android.collect.Maps; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.CancellationException; @@ -2260,9 +2259,6 @@ public class AccountManager { } /** - * Deprecated in favor of {@link #newChooseAccountIntent(Account, List, String[], String, - * String, String[], Bundle)}. - * * Returns an intent to an {@link Activity} that prompts the user to choose from a list of * accounts. * The caller will then typically start the activity by calling @@ -2277,13 +2273,14 @@ public class AccountManager { * null, null, null);</pre> * @param selectedAccount if specified, indicates that the {@link Account} is the currently * selected one, according to the caller's definition of selected. - * @param allowableAccounts an optional {@link List} of accounts that are allowed to be + * @param allowableAccounts an optional {@link ArrayList} of accounts that are allowed to be * shown. If not specified then this field will not limit the displayed accounts. * @param allowableAccountTypes an optional string array of account types. These are used * both to filter the shown accounts and to filter the list of account types that are shown * when adding an account. If not specified then this field will not limit the displayed * account types when adding an account. - * @param alwaysPromptForAccount boolean that is ignored. + * @param alwaysPromptForAccount if set the account chooser screen is always shown, otherwise + * it is only shown when there is more than one account from which to choose * @param descriptionOverrideText if non-null this string is used as the description in the * accounts chooser screen rather than the default * @param addAccountAuthTokenType this string is passed as the {@link #addAccount} @@ -2294,77 +2291,28 @@ public class AccountManager { * parameter * @return an {@link Intent} that can be used to launch the ChooseAccount activity flow. */ - @Deprecated - static public Intent newChooseAccountIntent( - Account selectedAccount, - List<Account> allowableAccounts, + static public Intent newChooseAccountIntent(Account selectedAccount, + ArrayList<Account> allowableAccounts, String[] allowableAccountTypes, boolean alwaysPromptForAccount, String descriptionOverrideText, String addAccountAuthTokenType, String[] addAccountRequiredFeatures, Bundle addAccountOptions) { - return newChooseAccountIntent( - selectedAccount, - allowableAccounts, - allowableAccountTypes, - descriptionOverrideText, - addAccountAuthTokenType, - addAccountRequiredFeatures, - addAccountOptions); - } - - /** - * Returns an intent to an {@link Activity} that prompts the user to choose from a list of - * accounts. - * The caller will then typically start the activity by calling - * <code>startActivityForResult(intent, ...);</code>. - * <p> - * On success the activity returns a Bundle with the account name and type specified using - * keys {@link #KEY_ACCOUNT_NAME} and {@link #KEY_ACCOUNT_TYPE}. - * <p> - * The most common case is to call this with one account type, e.g.: - * <p> - * <pre> newChooseAccountIntent(null, null, new String[]{"com.google"}, null, null, null, - * null);</pre> - * @param selectedAccount if specified, indicates that the {@link Account} is the currently - * selected one, according to the caller's definition of selected. - * @param allowableAccounts an optional {@link List} of accounts that are allowed to be - * shown. If not specified then this field will not limit the displayed accounts. - * @param allowableAccountTypes an optional string array of account types. These are used - * both to filter the shown accounts and to filter the list of account types that are shown - * when adding an account. If not specified then this field will not limit the displayed - * account types when adding an account. - * @param descriptionOverrideText if non-null this string is used as the description in the - * accounts chooser screen rather than the default - * @param addAccountAuthTokenType this string is passed as the {@link #addAccount} - * authTokenType parameter - * @param addAccountRequiredFeatures this string array is passed as the {@link #addAccount} - * requiredFeatures parameter - * @param addAccountOptions This {@link Bundle} is passed as the {@link #addAccount} options - * parameter - * @return an {@link Intent} that can be used to launch the ChooseAccount activity flow. - */ - static public Intent newChooseAccountIntent( - Account selectedAccount, - List<Account> allowableAccounts, - String[] allowableAccountTypes, - String descriptionOverrideText, - String addAccountAuthTokenType, - String[] addAccountRequiredFeatures, - Bundle addAccountOptions) { Intent intent = new Intent(); ComponentName componentName = ComponentName.unflattenFromString( Resources.getSystem().getString(R.string.config_chooseTypeAndAccountActivity)); intent.setClassName(componentName.getPackageName(), componentName.getClassName()); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ALLOWABLE_ACCOUNTS_ARRAYLIST, - new ArrayList<Account>(allowableAccounts)); + allowableAccounts); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ALLOWABLE_ACCOUNT_TYPES_STRING_ARRAY, allowableAccountTypes); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ADD_ACCOUNT_OPTIONS_BUNDLE, addAccountOptions); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_SELECTED_ACCOUNT, selectedAccount); + intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ALWAYS_PROMPT_FOR_ACCOUNT, + alwaysPromptForAccount); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_DESCRIPTION_TEXT_OVERRIDE, descriptionOverrideText); intent.putExtra(ChooseTypeAndAccountActivity.EXTRA_ADD_ACCOUNT_AUTH_TOKEN_TYPE_STRING, diff --git a/core/java/android/accounts/ChooseTypeAndAccountActivity.java b/core/java/android/accounts/ChooseTypeAndAccountActivity.java index 133df2b..c06b462 100644 --- a/core/java/android/accounts/ChooseTypeAndAccountActivity.java +++ b/core/java/android/accounts/ChooseTypeAndAccountActivity.java @@ -88,10 +88,9 @@ public class ChooseTypeAndAccountActivity extends Activity public static final String EXTRA_SELECTED_ACCOUNT = "selectedAccount"; /** - * Deprecated. Providing this extra to {@link ChooseTypeAndAccountActivity} - * will have no effect. + * If true then display the account selection list even if there is just + * one account to choose from. boolean. */ - @Deprecated public static final String EXTRA_ALWAYS_PROMPT_FOR_ACCOUNT = "alwaysPromptForAccount"; @@ -118,6 +117,7 @@ public class ChooseTypeAndAccountActivity extends Activity private Set<String> mSetOfRelevantAccountTypes; private String mSelectedAccountName = null; private boolean mSelectedAddNewAccount = false; + private boolean mAlwaysPromptForAccount = false; private String mDescriptionOverride; private ArrayList<Account> mAccounts; @@ -188,6 +188,7 @@ public class ChooseTypeAndAccountActivity extends Activity mSetOfAllowableAccounts = getAllowableAccountSet(intent); mSetOfRelevantAccountTypes = getReleventAccountTypes(intent); + mAlwaysPromptForAccount = intent.getBooleanExtra(EXTRA_ALWAYS_PROMPT_FOR_ACCOUNT, false); mDescriptionOverride = intent.getStringExtra(EXTRA_DESCRIPTION_TEXT_OVERRIDE); mAccounts = getAcceptableAccountChoices(AccountManager.get(this)); @@ -217,6 +218,15 @@ public class ChooseTypeAndAccountActivity extends Activity } else { startChooseAccountTypeActivity(); } + return; + } + + // if there is only one allowable account return it + if (!mAlwaysPromptForAccount && mAccounts.size() == 1) { + Account account = mAccounts.get(0); + super.onCreate(savedInstanceState); + setResultAndFinish(account.name, account.type); + return; } } |