我使用以下代码获取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。对于前者在我的设备安装应用程序时。只有一个电子邮件帐户是用于播放商店的主要Gmail帐户。但是当我添加另一个活动的同步电子邮件ID时,此代码返回第二个ID。我想只捕获他们的Android市场ID。为什么我特别关注那个已经我已经在我的mysql数据库中注册了那些电子邮件ID。只有我的公司员工应该使用这个应用程序,并且他们从Android设备访问时不需要身份验证(注册的gmail id)
答案 0 :(得分: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");
}
}