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

我知道如何查找帐户(其中将包括用户的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电子市场相关联的Gmail帐户,则会收到以下消息(如果您在先前的消息中按删除帐户 )。

在这里输入图像描述

谢谢您的帮助。


对话框

在这里输入图像描述

是由Google帐户身份验证程序中的AbstractAccountAuthenticator#getAccountRemovalAllowed实现引起的。

由于仅通过系统权限android.permission.ACCOUNT_MANAGER阻止直接调用AbstractAccountAuthenticator实现,所以您将很难自行找到它。


根据我的发现,设备中添加的第一个Google帐户是与Android市场关联的主要谷歌地址。 此外,我们按照设备中添加的顺序获取Google帐户。 因此,帐户[0]将成为第一个添加的电子邮件ID。

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

再次,我不确定这一点。 你必须用各种方案自己测试它。


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

你为什么要尝试这样做? 为了能够安全地删除帐户? 用户将得到一个适当的错误信息,所以他们应该能够决定是否删除该帐户。

链接地址: http://www.djcxy.com/p/24597.html

上一篇: How to find Gmail account associated with Android Market?

下一篇: Status expected:<200> but was:<404> in spring test