summaryrefslogtreecommitdiffstats
path: root/core/java/android/accounts
diff options
context:
space:
mode:
authorBaligh Uddin <baligh@google.com>2015-07-10 03:01:47 +0000
committerBaligh Uddin <baligh@google.com>2015-07-10 03:01:47 +0000
commitf2d248db8078e716b809e0a17cacdea5c5609bd5 (patch)
tree7e61e2f5dd7778f078580253cf0de4f66a05f806 /core/java/android/accounts
parentc3b3f46d5fcbd89deeb557556e5a695c3e5349a1 (diff)
downloadframeworks_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.java68
-rw-r--r--core/java/android/accounts/ChooseTypeAndAccountActivity.java16
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;
}
}