如何获取非主要购买帐户的电子邮件地址

时间:2012-01-24 20:17:07

标签: android google-play in-app-billing

在推出Android 3.0之前,手机上注册的第一个com.google帐户是主要帐户,也是Android Market使用的唯一帐户。

在Android 3.0及更高版本的设备上,我无法再依赖此(Account[0])来获取客户的电子邮件地址。

有没有办法告诉哪个帐户com.google帐户目前正在购买?

(我需要的是{em> index 到帐户类型Account[]的{​​{1}}数组中。我可以在获得相关索引后获取电子邮件地址)

4 个答案:

答案 0 :(得分:1)

我担心这是不可能的。根据我发现,看起来应用程序内购买的帐户是用于安装应用程序的帐户,您不知道。我想有可能从有根电话的Play商店应用数据库中读取它。

看起来在使用Google Play Android Developer API完成购买后甚至无法找到购买帐户,但不知道为什么会这样。

如果你有任何机会发现,请告诉我。

答案 1 :(得分:1)

我刚刚进行了快速谷歌搜索,并在此网站here上看到了这一点。

您可以使用AccountManager.getAccountsAccountManager.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);