Я знаю, что слишком поздно, но это может быть полезно для других.
Я думаю, что лучший способ автоматического заполнения поля электронной почты сейчас - использовать AccountPicker
Если ваше приложение имеет разрешение GET_ACCOUNTS и есть только одна учетная запись, вы сразу получите ее.Если в вашем приложении его нет или имеется более одной учетной записи, пользователи получают приглашение, чтобы они могли авторизовать или не выполнять действие.
Ваше приложение должно включать Сервисы Google Play , но ему не нужны никакие разрешения.
Весь этот процесс завершится с ошибкой на более старых версиях Android (требуется 2.2+) или если Google Play недоступен, поэтому вам следует рассмотреть этот случай.*
Вот базовый пример кода:
private static final int REQUEST_CODE_EMAIL = 1;
private TextView email = (TextView) findViewById(R.id.email);
// ...
try {
Intent intent = AccountPicker.newChooseAccountIntent(null, null,
new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE }, false, null, null, null, null);
startActivityForResult(intent, REQUEST_CODE_EMAIL);
} catch (ActivityNotFoundException e) {
// TODO
}
// ...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) {
String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
email.setText(accountName);
}
}