Программный запуск действия «Добавить аккаунт» в Android 2.2 - PullRequest
10 голосов
/ 26 августа 2010

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

Приложение I 'Я буду писать, требует, чтобы у пользователя была учетная запись Google, связанная с телефоном.Получение и использование токена авторизации и т. Д. Не было проблемой, однако я хотел бы иметь возможность показать активность, которую пользователь обычно достигает, пройдя через меню Настройки-> Учетные записи-> Добавить учетную запись.

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

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

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

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

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

Ответы [ 5 ]

15 голосов
/ 26 августа 2010

Проверьте ACTION_ADD_ACCOUNT

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));
3 голосов
/ 08 ноября 2010

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

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);
}
2 голосов
/ 10 февраля 2016

ответ на поставленный выше вопрос, предоставив 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); }
2 голосов
/ 04 ноября 2011

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

public AccountManagerFuture addAccount (String accountType, String authTokenType, String [] requiredFeatures, Bundle addAccountOptions, Деятельность Activity, Обратный вызов AccountManagerCallback, Обработчик обработчика)

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

1 голос
/ 01 августа 2011

Подсказка в вашей командной оболочке:

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