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

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

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

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

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

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

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

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


person Seidr    schedule 26.08.2010    source источник


Ответы (6)


Ознакомьтесь с ACTION_ADD_ACCOUNT.

startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));
person Pentium10    schedule 26.08.2010
comment
Моя благодарность - это на один шаг ближе к тому, чего я пытаюсь достичь, однако, цитируя наших мастеров-джедаев, - «это не та деятельность, которую вы ищете». Это следующий шаг в цепочке, которую я пытаюсь вызвать — часть мастера установки — действие, которое появляется, когда вы нажимаете на символ учетной записи «Google». Если это невозможно, я буду придерживаться ответа ACTION_ADD_ACCOUNT. Спасибо - person Seidr; 26.08.2010
comment
Вероятно, это невозможно, потому что я не вижу на связанном ресурсе. И это единственная страница, которая описывает глобальные настройки. - person Pentium10; 26.08.2010
comment
Это то, чего я боялся - я полагаю, что доступ к компоненту, который я вызываю выше, из оболочки adb (com.google.android.gsf/.login.AccountIntroActivity), вероятно, каким-то образом ограничен. - person Seidr; 26.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);
}
person markjan    schedule 08.11.2010
comment
Спасибо, markjan - я проверю это, как только снова настрою свой SDK. - person Seidr; 08.11.2010
comment
my_auth_token является допустимым типом токена аутентификации для учетной записи Google? Если нет, то не могли бы вы сообщить мне допустимый тип токена аутентификации для добавления учетной записи Google? - person Saurabh Jain; 22.03.2016

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

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

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

person Sam    schedule 03.11.2011

ответ на вышеуказанный вопрос, предоставив 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); }
person SHADOW NET    schedule 10.02.2016
comment
Я проверил, и он работает хорошо, этот ответ должен быть принят - person Duy Pham; 03.08.2018

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

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

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

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

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

person rumpel    schedule 22.08.2019