1

我正在使用以下代码来获取 android 的主电子邮件 ID。

       String possibleEmail = null;

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

    final TextView user = (TextView)findViewById(R.id.username);
    user.setText(possibleEmail);}

}

此代码的问题是当用户在其设备上添加新的电子邮件帐户时,它会返回不同的电子邮件 ID。例如。在安装应用程序时在我的设备中。只有一个电子邮件帐户是用于 Play 商店的主要 gmail 帐户。但是当我添加另一个活动同步电子邮件 ID 时,此代码返回第二个 ID。我只想捕获他们的 android 市场 ID。为什么我对此特别感兴趣,因为我已经在我的 mysql 数据库中注册了这些电子邮件 ID。只有我公司的员工才能使用这个应用程序,而且他们从 android 设备访问时不需要身份验证(注册的 gmail id)

4

1 回答 1

0

您正在使用的代码正在遍历所有具有电子邮件地址的帐户并设置possibleEmail为找到的最后一个帐户。

也许您想要的是找到帐户,type="com.google"如果有多个帐户,则向用户显示该列表,并允许他们选择要用于登录的 google 帐户。

这似乎对我找到谷歌帐户有用:

TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText("");

Pattern emailPattern = Patterns.EMAIL_ADDRESS;
Account[] accounts = AccountManager.get(getBaseContext()).getAccounts();
for (Account account : accounts)
{
    if (emailPattern.matcher(account.name).matches() && account.type.equals("com.google"))
    {
        tv.append(account.name + "\n");
    }
}
于 2013-10-29T17:32:59.410 回答