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