Как получить основной адрес электронной почты Android (или список адресов электронной почты)?
Насколько я понимаю, в OS 2.0+ есть поддержка нескольких адресов электронной почты, но ниже 2.0 вы можете иметь только один адрес электронной почты на устройство.
Ответы:
Есть несколько способов сделать это, показанные ниже.
В качестве дружеского предупреждения будьте внимательны и откровенны с пользователем при работе с учетной записью, профилем и контактными данными. Если вы неправильно используете адрес электронной почты пользователя или другую личную информацию, могут произойти плохие вещи.
Способ А. Использование AccountManager (уровень API 5+)
Вы можете использовать
AccountManager.getAccounts
или,AccountManager.getAccountsByType
чтобы получить список всех имен учетных записей на устройстве. К счастью, для определенных типов учетных записей (в том числеcom.google
), имена учетных записей являются адресами электронной почты. Пример фрагмента ниже.Обратите внимание, что для этого требуется
GET_ACCOUNTS
разрешение:Подробнее об использовании
AccountManager
можно найти в образце кода Contact Manager в SDK.Способ Б. Использование ContactsContract.Profile (уровень API 14+).
Начиная с Android 4.0 (Ice Cream Sandwich), вы можете получить адреса электронной почты пользователя, зайдя в его профиль. Доступ к профилю пользователя немного тяжеловесен, поскольку требует двух разрешений (подробнее об этом ниже), но адреса электронной почты являются довольно конфиденциальными данными, поэтому это цена входного билета.
Ниже приведен полный пример, который использует
CursorLoader
для получения строк данных профиля, содержащих адреса электронной почты.Это требует как
READ_PROFILE
иREAD_CONTACTS
разрешения:источник
cursor.isAfterLast()
всегда возвращает истину. Есть идеи?Это может быть полезно для других:
Использование AccountPicker для получения адреса электронной почты пользователя без каких-либо глобальных разрешений, а также позволяет пользователю быть в курсе и авторизовать или отменить процесс.
источник
Я бы использовал Android AccountPicker , представленный в ICS.
А затем дождитесь результата:
источник
источник
android.permission.GET_ACCOUNTS
, которое определено как «опасное» разрешение (требуется запрос времени выполнения): developer.android.com/reference/android/…Существует Android API, который позволяет пользователю выбирать свой адрес электронной почты без необходимости разрешения. Взгляните на: https://developers.google.com/identity/smartlock-passwords/android/retrieve-hints
Это покажет средство выбора, где пользователь может выбрать адрес электронной почты. Результат будет доставлен в
onActivityResult()
источник
К сожалению, принятый ответ не работает.
Я опаздываю, но вот решение для внутреннего приложения электронной почты Android, если контент не изменен поставщиком:
источник
Это довольно сложная вещь для Android, и я еще не сделал этого. Но, возможно, эти ссылки могут помочь вам:
источник
Используйте этот метод:
Обратите внимание, что для этого требуется
GET_ACCOUNTS
разрешение:Затем:
источник
Предложенные ответы больше не будут работать, поскольку существует новое ограничение, введенное с Android 8 и далее.
больше информации здесь: https://developer.android.com/about/versions/oreo/android-8.0-changes.html#aaad
источник
Android
GET_ACCOUNTS
недавно заблокировался, поэтому некоторые ответы у меня не сработали. Я получил это работает на Android 7.0 с оговоркой, что ваши пользователи должны вынести диалог разрешения.AndroidManifest.xml
MainActivity.java
источник
Работа в операционной системе MarshMallow
источник
Добавьте эту единственную строку в манифест ( для разрешения )
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
Затем вставьте этот код в вашу деятельность
источник