在推出Android 3.0之前,手机上注册的第一个com.google
帐户是主要帐户,也是Android Market使用的唯一帐户。
在Android 3.0及更高版本的设备上,我无法再依赖此(Account[0]
)来获取客户的电子邮件地址。
有没有办法告诉哪个帐户com.google
帐户目前正在购买?
(我需要的是{em> index 到帐户类型Account[]
的{{1}}数组中。我可以在获得相关索引后获取电子邮件地址)
答案 0 :(得分:1)
我担心这是不可能的。根据我发现,看起来应用程序内购买的帐户是用于安装应用程序的帐户,您不知道。我想有可能从有根电话的Play商店应用数据库中读取它。
看起来在使用Google Play Android Developer API完成购买后甚至无法找到购买帐户,但不知道为什么会这样。
如果你有任何机会发现,请告诉我。
答案 1 :(得分:1)
我刚刚进行了快速谷歌搜索,并在此网站here上看到了这一点。
您可以使用AccountManager.getAccounts
或AccountManager.getAccountsByType
获取设备上所有帐户名称的列表。幸运的是,对于某些帐户类型(包括com.google
),帐户名称是电子邮件地址。下面的示例代码段。
Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+ Account[] accounts = AccountManager.get(context).getAccounts(); for (Account account : accounts) {
if (emailPattern.matcher(account.name).matches()) {
String possibleEmail = account.name;
...
} }
请注意,这需要GET_ACCOUNTS
权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
可以在SDK中的Contact Manager示例代码中找到有关使用AccountManager
的更多信息。
答案 2 :(得分:-1)
第一个名字和姓氏&gt;&gt; java代码?
电子邮件添加代码
Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
Account[] accounts = AccountManager.get(getApplicationContext()).getAccounts();
for (Account account : accounts) {
if (account.type.equals("com.google")) {
email = account.name.toString();
break;
} else if (emailPattern.matcher(account.name).matches()) {
email = account.name.toString();
}
}
答案 3 :(得分:-2)
import android.provider.ContactsContract;
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType("com.google");
//you can set current sync account..
boolean syncEnabled = ContentResolver.getSyncAutomatically(accounts[0], ContactsContract.AUTHORITY);