Программный запуск активности "Добавить учетную запись" в Android 2.2

Я экспериментировал с Android SDK за последние несколько дней, готовясь написать приложение для магазина, однако я столкнулся с какой-то проблемой.

Приложение, которое я буду писать, требует, чтобы у пользователя была учетная запись Google, связанная с телефоном. Повторное получение и использование токена Auth и т.д. Не было проблемой, однако я хотел бы показать активность, которую обычный пользователь достигнет, просмотрев меню "Настройки" → "Учетные записи" → "Добавить учетную запись".

Теперь с помощью эксперимента я смог запустить эту операцию из оболочки с помощью следующей команды.

am start -n com.google.android.gsf/.login.AccountIntroActivity

У меня возникают проблемы с выполнением одного и того же действия в JAVA с использованием класса Intent.

Кто-нибудь сможет сказать мне, во-первых, можно ли это сделать через JAVA, а во-вторых, как я могу это сделать?

Если мне нужно установить экран настроек синхронизации, то я буду (это может быть достигнуто с помощью намерения Settings.ACTION_SYNC_SETTINGS), однако было бы неплохо, если бы вы могли прямо направить пользователя на необходимый экран.

Ответ 1

Посмотрите ACTION_ADD_ACCOUNT

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));

Ответ 2

Попробуйте следующее:

public static void addGoogleAccount(final Activity activity) {
    final AccountManager accountMgr = AccountManager.get(activity);
    accountMgr.addAccount("com.google", "my_auth_token", null, null, activity, null, null);
}

Ответ 3

Диспетчер учетных записей Android предоставляет API для добавления учетной записи. (google или другие типы учетных записей)

public AccountManagerFuture addAccount (String accountType, String authTokenType, String [] requiredFeatures, Bundle addAccountOptions, Activity activity, AccountManagerCallback callback, обработчик обработчика)

http://developer.android.com/reference/android/accounts/AccountManager.html

Ответ 4

ответ на указанный вопрос, предоставив EXTRA_ACCOUNT_TYPES в дополнительных данных о намерениях. и установите значение "com.google", чтобы предупредить об этом:

public static void startAddGoogleAccountIntent(Context context){
Intent addAccountIntent = new Intent(android.provider.Settings.ACTION_ADD_ACCOUNT)
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
addAccountIntent.putExtra(Settings.EXTRA_ACCOUNT_TYPES, new String[] {"com.google"});
context.startActivity(addAccountIntent); }

Ответ 5

Ключ в командной строке:

    Intent intent = new Intent();
    intent.setClassName( "com.google.android.gsf", "com.google.android.gsf.login.AccountIntroActivity" );
    context.startActivity( intent );

Ответ 6

Для последних Android, использующих adb, вы можете сделать:

adb shell am start -a android.settings.ADD_ACCOUNT_SETTINGS \
                   -n com.android.settings/.accounts.AddAccountSettings

(Вам все равно придется выбрать, какой тип учетной записи вы бы хотели)