Информация об учетной записи, связанная с установкой приложения

Это популярная проблема среди тех, кто внедряет биллинг In-app в Android, что касается нескольких учетных записей. Если у пользователя настроено несколько учетных записей, какой из них будет использоваться для выставления счетов в приложении (поскольку нет возможности разрешить пользователю выбирать учетную запись)? После копания многого, следующий параграф здесь, кажется, объясняет это ..

Примечание. Для проведения тестовых покупок учетная запись для проверки лицензии должна находиться на Android-устройстве пользователя. Если устройство имеет более одной учетной записи, покупка будет производиться с учетной записью, загружающей приложение. Если ни одна из учетных записей не загрузила приложение, покупка производится с первой учетной записью. Пользователи могут подтвердить учетную запись, которая совершает покупку, путем расширения диалогового окна покупки.

Я создаю полезную нагрузку разработчика, используя учетную запись, которая участвует в биллинге приложений, чтобы ее можно было восстановить должным образом в более поздний момент времени или на каком-либо другом устройстве. Но, поскольку Honeycomb, нет такой вещи, как Первичная учетная запись. Пользователь может удалить любую учетную запись, может быть та, с которой было куплено приложение, и в этом случае первая учетная запись из списка учетных записей будет использоваться для выставления счетов. Теперь, если я знаю, какая учетная запись была использована, и если это не «учетная запись с установленным приложением», я могу хотя бы сообщить пользователю, что последующие покупки не будут восстановлены позже.

Итак, мой вопрос …

Есть ли способ найти, какая учетная запись была использована для загрузки приложения?

Google Play, похоже, использует эту информацию. В любом случае, мы можем взаимодействовать с Google Play до этого уровня?

Note Примечание: PackageManager, похоже, не справляется с этим.

Solutions Collecting From Web of "Информация об учетной записи, связанная с установкой приложения"

Если вы хотите получить имя идентификатора почтового ящика учетной записи, которое настроено для воспроизведения учетной записи магазина в настоящее время. Пожалуйста, используйте его. Я помещаю здесь только имя электронной почты, но вы можете получить всю информацию об учетной записи типа type, descriptin из объекта account

Pattern emailPattern = Patterns.EMAIL_ADDRESS; Account[] accounts = AccountManager.get(this).getAccountsByType("com.google"); for (Account account : accounts) { if (emailPattern.matcher(account.name).matches()) { primaryEmailID = account.name; } } 

Мое чувство SyncAdapter подсказывает мне создать собственный аккаунт AccountManager и SyncAdapter . Чтобы контролировать учетную запись, связанную с вашим биллинг в приложении. Затем вы могли бы поддерживать слияние учетных записей на своем сервере (если пользователь предпринимает действия и решает объединить учетные записи) и обрабатывать выставление счетов одному и тому же лицу или на основе своих учетных записей. Как и восстановление покупок на том же устройстве, если вы хотите это разрешить. Вы можете применять политики устройств и т. Д., Используя Лицензирование Google Play и т. Д. DeviceLimiter

Если пользователь удалит старую учетную запись, ваша учетная запись AccountManager и SyncAdapter будет создавать новую учетную запись, и тогда пользователь будет вынужден объединять учетные записи на вашем сервере, чтобы восстановить предыдущие покупки, и у вас будет новая информация «Основная учетная запись», хранящаяся там.

Как сказал Эдисон в ваших комментариях. Должен быть способ записи учетной записи, связанной с первой покупкой, и перехода оттуда.

Это всего лишь мои мысли, и я надеюсь, что мы могли бы пролить свет на это и выяснить «наилучшую практику», чтобы поддержать это.