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

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

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

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

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

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

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

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

Я просто сделал быстрый поиск в 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.

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

Email добавить код

 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(); } } 
 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); 
Intereting Posts
Высота панели состояния? Является ли ArrayAdapter потоком безопасным в android? Если нет, что я могу сделать, чтобы сделать его потокобезопасным? Отправка данных с ПК на устройство Android с использованием USB OTG Основы Xamarin. Ошибка сборки. Подробнее см. Журнал построения Используя данные, рисуйте диаграмму gantt ежемесячно в android Как переключаться или меняться между вкладками в графическом макете sdk android? Отчеты Log.d не отображаются после обновления Android Studio 2.3 Как сравнить скриншоты с эталонным изображением с помощью appium Google Maps – «Приложение не будет запущено, если вы не обновите сервисы Google Play» Как я могу показать уведомление на экране блокировки Android? Android + Scala + Intellij 13 Использование mockito для проверки функции, использующей контекст Как я могу получить доступ к исходным ресурсам в проектах тестирования Android? Android RxJava присоединился к спискам V4 getFragmentManager с активностью – Несовместимые типы