如何找到与 Android Market 关联的 Gmail 帐户?

Posted

技术标签:

【中文标题】如何找到与 Android Market 关联的 Gmail 帐户?【英文标题】:How to find Gmail account associated with Android Market? 【发布时间】:2012-05-23 07:59:45 【问题描述】:

我知道如何查找帐户(包括用户的 gmail 电子邮件 ID)以及如何过滤 gmail 帐户。

AccountManager am = AccountManager.get(context);
        Account[] accounts = am.getAccounts();
        ArrayList<String> googleAccounts = new ArrayList<String>();
        for (Account ac : accounts) 
            String acname = ac.name;
            String actype = ac.type;
            //add only google accounts
            if(ac.type.equals("com.google")) 
                googleAccounts.add(ac.name);
            
            Log.d(TAG, "accountInfo: " + acname + ":" + actype);
        
        return googleAccounts;

我想知道如何找到与 android Market 关联的 gmail 帐户?如果您尝试从 Android 手机中删除 gmail 帐户,您将收到此消息

但如果您尝试删除与 Android Market 关联的 gmail 帐户,您将收到以下消息(如果您在之前的消息中按删除帐户)。

感谢您的帮助。

【问题讨论】:

您的意思是主电子邮件帐户?检查这个***.com/questions/2112965/… @userSeven7s 答案只涉及在设备上获取帐户,而不是与 Android Market 关联的帐户。如您所见,这是有区别的。 不是和市场应用关联的主账号吗? @userSeven7s 据我所知,Android 文档中没有定义像“主帐户”这样的东西。 @GauravAgarwal 你的代码在marshmellow之后/之后是否适用于android版本? 【参考方案1】:

“关联”将由 Android Market/Google Play 应用程序管理,我认为它没有任何公共 API 可以告诉您它使用哪些帐户。此外,在最近的版本中,它可以使用多个帐户,因此手机上的任何 Google 帐户都可以与 Market/Play 商店应用程序一起使用。

您究竟为什么要这样做?为了能够“安全地”删除帐户?用户将收到适当的错误消息,因此他们应该能够决定是否删除该帐户。

【讨论】:

我想在我的应用程序中使用与市场关联的 gmail 帐户注册用户。与 Market 关联的 Gmail 可确保其不会被频繁删除或更改。 好的,我明白了。我认为不可能可靠地找出答案。您最好的选择可能是使用第一个列出的 Google 帐户。激活设备时设置,一般不会删除。 我猜你是对的..:)。让我们等几天,看看是否有人有办法。【参考方案2】:

对话框

是由 Google 帐户验证器中的 AbstractAccountAuthenticator#getAccountRemovalAllowed 实现引起的。

由于仅系统权限android.permission.ACCOUNT_MANAGER 阻止了直接调用AbstractAccountAuthenticator 的实现,因此您将很难自己发现这一点。

【讨论】:

你真是个混蛋。在这里阅读你的评论***.com/questions/9801304/…。只是一个简单的问题,系统权限是什么意思。 这意味着为了获得所需的权限,android.permission.ACCOUNT_MANAGER,您的应用程序需要使用与系统应用程序相同的证书进行签名 - 有效地防止本土应用程序调用它,除非您'已植根您的设备。 但是我可以在 Android Manifest 中的Uses Permission 中获得android.permission.ACCOUNT_MANAGER 的权限。 当然,您可以在那里添加任何您想要的权限 - 但是您的应用程序不会被授予权限,即如果您要跳过所有的环节(即复制必要的 AIDL 文件并创建存根)对于IAccountAuthenticator API)它仍然会拒绝您的呼叫【参考方案3】:

据我发现,设备中添加的第一个 google 帐户是与 android market 相关联的主要 google 地址。此外,我们按照添加到设备中的顺序获取 google 帐户。因此,accounts[0] 将是第一个添加的电子邮件 ID。

String marketAssociatedEmailId = "";
Account[] accounts = AccountManager.get(context).getAccountsByType("com.google");
if(accounts.length > 0) 
  marketAssociatedEmailId = accounts[0].name;

同样,我不确定这一点。您必须自己使用各种场景进行测试。

【讨论】:

我可以在电子市场上更改我的电子邮件地址,并使用与我的主要帐户(我第一次在设备上登录的帐户)不同的帐户购买应用程序。最好知道购买/下载的帐户是哪个帐户你的应用程序。所以我们可以控制过期和类似的东西。

以上是关于如何找到与 Android Market 关联的 Gmail 帐户?的主要内容,如果未能解决你的问题,请参考以下文章

android:如何像 android market 一样让标签页翻转?

关联分析(购物篮子分析market basket analysis)R练习

转开发者教程:如何将Android应用发布到Google Play(Android Market)官方市场

使用 Weka 获取用于构建关联规则的数据集

Stripe Connect (Market Place) 多次拆分到关联账户

如何使用 chrome 上的新方案将数据传递到 android Market?