7

我知道如何查找帐户(包括用户的 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 帐户,您将收到以下消息(如果您在前面的消息中按删除帐户)。

在此处输入图像描述

谢谢您的帮助。

4

3 回答 3

3

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

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

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

于 2014-05-23T05:41:24.080 回答
2

对话框

在此处输入图像描述

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

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

于 2012-05-22T09:16:04.593 回答
0

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

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

于 2012-05-18T06:00:49.310 回答