如何查找与Android电子市场相关联的Gmail帐户?

时间:2012-05-15 18:48:40

标签: android google-play

我知道如何查找帐户(包括用户的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电子市场相关联的Gmail帐户?如果您尝试从Android手机中删除Gmail帐户,您将收到此消息 enter image description here

但如果您尝试删除与Android电子市场相关联的Gmail帐户,您将收到以下消息(如果您在之前的消息中按删除帐户)。

enter image description here

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

对话框

enter image description here

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

由于系统专用权限AbstractAccountAuthenticator会阻止直接调用android.permission.ACCOUNT_MANAGER的实施,因此您很难自行查找。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

为什么你要这么做?能够“安全”删除帐户吗?用户将收到相应的错误消息,因此他们应该能够决定是否删除该帐户。