30

在 Android 中实现应用内计费的人中,一个广泛寻求的问题是如何处理多个帐户。如果用户配置了多个帐户,哪一个将用于应用内计费(因为没有让用户选择帐户的选项)?在挖掘了很多之后,下面的段落似乎可以解释它..

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

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

所以,我的问题是..

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

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

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

4

2 回答 2

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;

                }
            }
于 2015-07-24T10:14:47.630 回答
0

我的直觉告诉我要创建自己的AccountManager组合SyncAdapter。为了控制与您的应用内计费关联的帐户。然后,您可能支持合并服务器上的帐户(如果用户采取行动并决定合并帐户)并处理对同一个人或基于他们的帐户的计费。如果您愿意,还可以将购买恢复到同一设备。您可以使用Google Play 许可等强制执行设备策略等。设备限制器

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

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

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

于 2014-02-07T15:19:40.190 回答