Android:获取与应用内结算相关联的Google Play帐户

时间:2014-07-21 10:39:54

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

如何获取与应用相关联的Google Play帐户的电子邮件/ ID?

我需要这样才能向用户显示针对应用内结算的帐户。据我了解,Google应用内结算使用下载该应用的帐户,但我需要找到一种方法向用户显示此信息,以防他配置了多个帐户。

如果用户有另一个与该应用相关联的帐户,这可以防止用户投诉没有识别他们的购买。

3 个答案:

答案 0 :(得分:0)

我认为没有办法检测用户在应用内购买时会使用的帐户。

我唯一能想到的是查询AccountManager以检查用户是否有多个Google帐户,并显示一条消息说:“您有多个Google帐户,请确保您是在继续之前使用正确的“。此方法的唯一问题是您需要添加所需的权限才能执行此查询。

答案 1 :(得分:0)

无法知道用户购买的电子邮件。

即使使用Account Manager,也会返回所有电子邮件的完整列表。

Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account account : accounts) {
   if (emailPattern.matcher(account.name).matches()) {
       String possibleEmail = account.name;
       ...
   }
}

这并不像选择列表中的第一个那么简单,因为用户可以购买任何与手机相关联的电子邮件。 您可以使用AbstractAccountAuthenticator#getAccountRemovalAllowed,知道该帐户无法删除,并知道哪个是主邮件(因为您无法删除主邮件),但即使这可能会更改,用户也可以更改主邮件任何时候。

我想知道如何做到这一点,但不幸的是没有办法。在我的情况下,它不是必需的钱,所以我发送给我作为“有效载荷”电话连接的所有电子邮件帐户,所有这些将允许在我的应用程序中解锁优质内容,我可以失去一些销售?这很可能,但我更倾向于在市场上得分为负,因为用户购买了优质内容而无法解锁,因为我选择了错误的邮件。

答案 2 :(得分:0)

实际上无法从Google Play获取下载该应用程序的帐户。 建议是创建自己的应用程序用户帐户,并且只允许在用户注册后购买(您可以使用您想要使用的任何方法)。

并且,对于每次购买,您在支持链接到用户的帐户。而且,如果用户使用其他Google帐户登录其他设备,如果他使用正确的帐户登录您的应用程序,则会授予访问权限。

Google Play团队意识到这不是最佳解决方案,正如我评论on this question,我们正在改进API,一旦我们有更新,我也会在此发布。