与应用程序安装关联的帐户信息

在Android中实现应用内结算的人员中,这是一个广泛追求的问题,即处理多个帐户的方式。 如果用户configuration了多个帐户,哪一个帐户将用于应用内结算(因为没有选项可让用户select帐户)? 挖了很多,下面的段落似乎在解释它..

注意:要进行testing购买,许可证testing帐户必须位于用户的Android设备上。 如果设备有多个帐户,购买将使用下载应用程序的帐户进行。 如果没有帐户下载应用程序,则采用第一个帐户进行购买。用户可以通过展开购买对话框来确认正在进行购买的帐户。

我使用应用程序结算中涉及的帐户创build开发人员有效负载,以便在稍后的时间点或其他某个设备上正确恢复。 但是自从Honeycomb之后,就没有这样的东西了。 用户可以删除任何帐户,可能是应用程序购买的帐户,在这种情况下,帐户列表中的第一个帐户将用于帐单。 现在,如果我知道使用了哪个帐户,并且如果它发生的不是应用程序的安装帐户,我至less可以通知用户,以下购买将不会恢复。

所以,我的问题是..

有没有办法find哪个帐户用于下载应用程序?

Google Play确实似乎使用了这些信息。 无论如何,我们可以与Google Play进行互动,达到这个级别?

注意:PackageManager似乎没有处理这个。

Solutions Collecting From Web of "与应用程序安装关联的帐户信息"

如果您想获取当前configuration为播放商店帐户的帐户邮件ID的名称。 请使用它。 我只是把这里的电子邮件名称,但你可以从账户对象得到所有types的信息,描述

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; } } 

我的直觉告诉我创build你自己的AccountManagerSyncAdapter组合。 为了控制与您在应用程序结算相关的帐户。 然后,您可以支持在您的服务器上合并帐户(如果用户采取行动并决定合并帐户),并根据帐户处理同一个人的帐单。 如果您想允许的话,还可以将购买的产品恢复到同一个设备上。 您可以使用Google Play许可执行设备政策等。 DeviceLimiter

如果用户删除旧帐户,您的AccountManagerSyncAdapter组合将创build一个新帐户,然后用户将被迫合并您的服务器上的帐户,以恢复以前的购买,你将有新的“主帐户”信息存储在那里。

就像爱迪生在你的评论中说的那样。 必须有一种方法来logging与第一次购买相关的账户并从那里开始。

这些只是我的想法,我希望我们能够对此有所了解,并找出一个“最佳实践”来支持这一点。