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

时间:2013-10-09 14:43:48

标签: android in-app-purchase in-app-billing google-account android-billing

在Android中实施应用内结算的用户中,这是一个广受欢迎的问题,即如何处理多个帐户。如果用户配置了多个帐户,哪个帐户将用于应用内结算(因为没有选项让用户选择帐户)?在挖掘了很多之后,在here段之后似乎可以解释它。

  

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

我使用应用程序结算中涉及的帐户创建了一个开发人员有效负载,以便可以在以后的某个时间点或其他某个设备上正确还原。但是自Honeycomb以来,没有主账户这样的东西。用户可以删除任何帐户,可能是购买该应用程序的帐户,在这种情况下,帐户列表中的第一个帐户将用于计费。现在,如果我知道使用了哪个帐户,并且它是否“不是安装了应用程序的帐户”,我至少可以告知用户以后的购买将不会恢复。

所以,我的问题是......

有没有办法找到用于下载应用程序的帐户?

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

注意:PackageManager似乎没有解决这个问题。

2 个答案:

答案 0 :(得分:2)

如果您想获取配置为当前播放商店帐户的帐户邮件ID的名称。请使用它。 我只是为电子邮件名称添加此处,但您可以从帐户对象中获取帐户类型,描述等所有帐户信息

  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;

                }
            }

答案 1 :(得分:0)

我的直觉告诉我要创建自己的AccountManagerSyncAdapter组合。为了控制与您的应用内结算相关联的帐户。 然后,您可以支持在您的服务器上合并帐户(如果用户采取行动并决定合并帐户)并处理向同一个人或基于其帐户的帐单。如果您想允许,还可以将购买恢复到同一设备。 您可以使用Google Play Licensing强制执行设备策略等。 DeviceLimiter

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

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

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