AccountPicker

public final class AccountPicker extends Object

Common account picker similar to the standard framework account picker introduced in ICS: newChooseAccountIntent.

Nested Class Summary

class AccountPicker.AccountChooserOptions Options for building an appropriate intent to launch the Account Picker. 

Public Method Summary

static Intent
newChooseAccountIntent(AccountPicker.AccountChooserOptions options)
Returns an intent to an Activity that prompts the user to choose from a list of accounts.
static Intent
newChooseAccountIntent(Account selectedAccount, ArrayList<Account> allowableAccounts, String[] allowableAccountTypes, boolean alwaysPromptForAccount, String descriptionOverrideText, String addAccountAuthTokenType, String[] addAccountRequiredFeatures, Bundle addAccountOptions)
This method is deprecated. use newChooseAccountIntent(AccountChooserOptions)

Inherited Method Summary

Public Methods

public static Intent newChooseAccountIntent (AccountPicker.AccountChooserOptions options)

Returns an intent to an Activity that prompts the user to choose from a list of accounts. The caller will then typically start the activity by calling startActivityForResult(intent, ...);.

On success the activity returns a Bundle with the account name and type specified using keys AccountManager.KEY_ACCOUNT_NAME and AccountManager.KEY_ACCOUNT_TYPE.

NOTE: for API level Build.VERSION_CODES.O: The activity only shows accounts visible to Google Play services as opposed to newChooseAccountIntent. If chosen account has Google type it is marked as visible to the caller and will be returned by AccountManager.getAccountsByType(String).

The most common case is to call this with one account type, e.g.:

 Intent intent =
     AccountPicker.newChooseAccountIntent(
         new AccountChooserOptions.Builder()
             .setAllowableAccountsTypes(Arrays.asList("com.google"))
             .build());
 startActivityForResult(intent, SOME_REQUEST_CODE);
 
The account picker activity will return when the user has selected and/or created an account, and the resulting account name can be retrieved as follows:
 protected void onActivityResult(final int requestCode, final int resultCode,
         final Intent data) {
     if (requestCode == SOME_REQUEST_CODE && resultCode == RESULT_OK) {
         String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
   }
 }
 
Parameters
options that controls the behavior and style of the AccountPicker.

public static Intent newChooseAccountIntent (Account selectedAccount, ArrayList<Account> allowableAccounts, String[] allowableAccountTypes, boolean alwaysPromptForAccount, String descriptionOverrideText, String addAccountAuthTokenType, String[] addAccountRequiredFeatures, Bundle addAccountOptions)

This method is deprecated.
use newChooseAccountIntent(AccountChooserOptions)

Returns an intent to an Activity that prompts the user to choose from a list of accounts. The caller will then typically start the activity by calling startActivityForResult(intent, ...);.

On success the activity returns a Bundle with the account name and type specified using keys AccountManager.KEY_ACCOUNT_NAME and AccountManager.KEY_ACCOUNT_TYPE.

NOTE: for API level Build.VERSION_CODES.O: The activity only shows accounts visible to Google Play services as opposed to newChooseAccountIntent. If chosen account has Google type it is marked as visible to the caller and will be returned by AccountManager.getAccountsByType(String).

The most common case is to call this with one account type, e.g.:

 Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[]{"com.google"},
         false, null, null, null, null);
 startActivityForResult(intent, SOME_REQUEST_CODE);
 
The account picker activity will return when the user has selected and/or created an account, and the resulting account name can be retrieved as follows:
 protected void onActivityResult(final int requestCode, final int resultCode,
         final Intent data) {
     if (requestCode == SOME_REQUEST_CODE && resultCode == RESULT_OK) {
         String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
   }
 }
 
Parameters
selectedAccount if specified, indicates that the Account is the currently selected one, according to the caller's definition of selected.
allowableAccounts an optional ArrayList of accounts that are allowed to be shown. If not specified then this field will not limit the displayed accounts.
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.
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 or the calling app doesn't have the Manifest.permission.GET_ACCOUNTS permission.
descriptionOverrideText if non-null this string is used as the description in the accounts chooser screen rather than the default.
addAccountAuthTokenType this optional string is passed as the AccountManager.addAccount(String, String, String[], Bundle, Activity, AccountManagerCallback, Handler) authTokenType parameter. Current implementation does not check this value.
addAccountRequiredFeatures this optional string array is passed as the AccountManager.addAccount(String, String, String[], Bundle, Activity, AccountManagerCallback, Handler) requiredFeatures parameter. Current implementation does not check this value.
addAccountOptions This optional Bundle is passed as the AccountManager.addAccount(String, String, String[], Bundle, Activity, AccountManagerCallback, Handler) options parameter. Can be null if sending no extra options.
Returns
  • an Intent that can be used to launch the ChooseAccount activity flow.