Как получить неосновной адрес электронной почты для покупки аккаунта - PullRequest
17 голосов
/ 25 января 2012

До появления Android 3.0 первая учетная запись com.google, зарегистрированная на телефоне, была основной и единственной учетной записью, используемой Android Market.

На устройствах на Android 3.0 и выше я больше не могу полагаться на это (Account[0]), чтобы получить адрес электронной почты клиента.

Есть ли способ сообщить , какая учетная запись com.google учетная запись в настоящее время совершает покупку?

(все, что мне нужно, это индекс в массиве Account[] для типа учетной записи com.google. Я могу получить адрес электронной почты, как только у меня будет соответствующий индекс)

Ответы [ 4 ]

1 голос
/ 12 октября 2012

Боюсь, это невозможно. Из того, что я обнаружил, похоже, что учетная запись, делающая покупку в приложении, является учетной записью, используемой для установки приложения, которую вы не знаете. Я полагаю, что возможно прочитать его из базы данных приложения Play store на рутованных телефонах.

Похоже, что даже после совершения покупки с помощью API разработчика Google Play для Android найти учетную запись покупки невозможно, хотя и не знаю, почему это так.

Если вы случайно узнаете об этом, дайте мне знать.

1 голос
/ 12 января 2013

Я только что сделал быстрый поиск в Google и наткнулся на это на этом сайте здесь .

Вы можете использовать AccountManager.getAccounts или AccountManager.getAccountsByType, чтобы получить список всех имен учетных записей наУстройство.К счастью, для определенных типов учетных записей (включая com.google), имена учетных записей являются адресами электронной почты.Пример фрагмента ниже.

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ Account[] accounts = AccountManager.get(context).getAccounts(); for (Account account : accounts) {
    if (emailPattern.matcher(account.name).matches()) {
        String possibleEmail = account.name;
        ...
    } }

Обратите внимание, что для этого требуется разрешение GET_ACCOUNTS:

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

Подробнее об использовании AccountManager можно найти в Contact Manager образец кода в SDK.

0 голосов
/ 04 сентября 2015

имя и фамилия >> код java?

адрес электронной почты добавить код

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(getApplicationContext()).getAccounts();
for (Account account : accounts) {
    if (account.type.equals("com.google")) {
        email = account.name.toString();
        break;
    } else if (emailPattern.matcher(account.name).matches()) {
        email = account.name.toString();
    }
}
0 голосов
/ 18 июля 2012
import android.provider.ContactsContract;

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType("com.google");        

//you can set current sync account..

boolean syncEnabled = ContentResolver.getSyncAutomatically(accounts[0], ContactsContract.AUTHORITY);
...