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

17

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

在Android 3.0及以上版本的设备上,我不能再依赖于这个(Account[0])来获取客户的电子邮件地址。

有没有一种方法可以确定当前正在进行购买的com.google帐户是哪个?

(我所需要的只是帐户类型为com.google的帐户数组中的索引。一旦我获得相关的索引,我就可以获取电子邮件地址)

4个回答

1

恐怕这是不可能的。从我找到的资料来看,似乎进行应用内购买的帐户是用于安装该应用程序的帐户,而您并不知道该帐户。我猜在已经root的手机上可以从Play商店应用程序数据库中读取它。

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

如果您碰巧找到了,请告诉我。


1

我刚刚进行了一次快速的谷歌搜索,并在这个网站这里找到了这个。

您可以使用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" />

关于如何使用AccountManager,可以在SDK中的联系人管理器示例代码中找到更多信息。


-1

名字和姓氏 >> 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();
    }
}

1
我建议提供更多的解释。 - peterh
用于获取安卓设备上的邮件地址 - Kazım erdoğan

-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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接