在Android中实施应用内结算的用户中,这是一个广受欢迎的问题,即如何处理多个帐户。如果用户配置了多个帐户,哪个帐户将用于应用内结算(因为没有选项让用户选择帐户)?在挖掘了很多之后,在here段之后似乎可以解释它。
注意:要进行测试购买,许可测试帐户必须位于用户的Android设备上。如果设备有多个帐户,则会使用下载该应用的帐户进行购买。如果没有任何帐户下载了应用程序,则使用第一个帐户进行购买。用户可以通过展开购买对话框来确认正在进行购买的帐户。
我使用应用程序结算中涉及的帐户创建了一个开发人员有效负载,以便可以在以后的某个时间点或其他某个设备上正确还原。但是自Honeycomb以来,没有主账户这样的东西。用户可以删除任何帐户,可能是购买该应用程序的帐户,在这种情况下,帐户列表中的第一个帐户将用于计费。现在,如果我知道使用了哪个帐户,并且它是否“不是安装了应用程序的帐户”,我至少可以告知用户以后的购买将不会恢复。
所以,我的问题是......
有没有办法找到用于下载应用程序的帐户?
Google Play似乎确实使用了这些信息。无论如何,我们可以与Google Play互动达到这个水平吗?
注意:PackageManager似乎没有解决这个问题。
答案 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)
我的直觉告诉我要创建自己的AccountManager
和SyncAdapter
组合。为了控制与您的应用内结算相关联的帐户。
然后,您可以支持在您的服务器上合并帐户(如果用户采取行动并决定合并帐户)并处理向同一个人或基于其帐户的帐单。如果您想允许,还可以将购买恢复到同一设备。
您可以使用Google Play Licensing强制执行设备策略等。 DeviceLimiter
如果用户删除了旧帐户,则AccountManager
和SyncAdapter
组合会创建一个新帐户,然后用户将被迫合并您服务器上的帐户以恢复之前的购买将新的“主要帐户”信息存储在那里。
这些只是我的想法,我希望我们能够对此有所了解并找出支持这一点的“最佳实践”。