Программный запуск действия "Добавить аккаунт" в Android 2.2
Последние несколько дней я экспериментировал с Android SDK, готовясь написать приложение для магазина, однако столкнулся с небольшой проблемой.
Приложение, которое я напишу, требует, чтобы у пользователя была учетная запись Google, связанная с телефоном. Получение и использование токена авторизации и т. Д. Не было проблемой, однако я хотел бы иметь возможность показать активность, которую пользователь обычно достигнет, пройдя через меню Настройки-> Учетные записи-> Добавить учетную запись.
Теперь с помощью экспериментов я смог запустить это действие из оболочки с помощью следующей команды.
am start -n com.google.android.gsf/.login.AccountIntroActivity
У меня проблемы с выполнением того же действия в JAVA с использованием класса Intent.
Кто-нибудь сможет сказать мне, во-первых, можно ли сделать это через JAVA, и, во-вторых, как я могу это сделать, пожалуйста?
Если мне придется согласиться на экран настроек синхронизации, я сделаю это (это можно сделать с помощью намерения Settings.ACTION_SYNC_SETTINGS), однако было бы неплохо иметь возможность направить пользователя прямо на нужный экран.
5 ответов
Проверьте ACTION_ADD_ACCOUNT
startActivity(new Intent(Settings.ACTION_ADD_ACCOUNT));
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
Попробуйте следующее:
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);
}
Ответ на поставленный выше вопрос, предоставив 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); }
Для последних Android, использующих adb
ты можешь сделать:
adb shell am start -a android.settings.ADD_ACCOUNT_SETTINGS \
-n com.android.settings/.accounts.AddAccountSettings
(Вам все равно придется выбрать тип учетной записи, который вам нравится)
Подсказка в вашей командной оболочке:
Intent intent = new Intent();
intent.setClassName( "com.google.android.gsf", "com.google.android.gsf.login.AccountIntroActivity" );
context.startActivity( intent );