在Android中获取用户的Gmail ID

时间:2013-09-04 12:28:20

标签: android google-play-services android-account

我不知道这是不是正确的问题。我们如何才能获得用户在Android中使用谷歌Play商店的内容。这是否可能。

2 个答案:

答案 0 :(得分:8)

据我所知,用户必须在他的Android手机中配置他的Gmail帐户,然后才能访问Google Play。

您可以按照下面的说明(来自Jim Blackler)获取帐户信息:

import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;

/**
* This class uses the AccountManager to get the primary email address of the
* current user.
*/
public class UserEmailFetcher {

    static String getEmail(Context context) {
        AccountManager accountManager = AccountManager.get(context); 
        Account account = getAccount(accountManager);

        if (account == null) {
            return null;
        } else {
            return account.name;
        }
    }

    private static Account getAccount(AccountManager accountManager) {
        Account[] accounts = accountManager.getAccountsByType("com.google");
        Account account;
        if (accounts.length > 0) {
            account = accounts[0];      
        } else {
            account = null;
        }
        return account;
    }
}
     

在清单中

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

答案 1 :(得分:5)

如果您使用的方法不需要通过AndroidManifest.xml申请权限,则可以使用Google Play服务&#39; AccountPicker

生成一个对话框,允许用户选择所需的Google帐户:

Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[]{"com.google"}, false, null, null, null, null);
startActivityForResult(intent, SOME_REQUEST_CODE);

然后在Activity

中处理结果
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    if (requestCode == SOME_REQUEST_CODE && resultCode == RESULT_OK) {
        String emailAddress = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
        // do something...
    }
}

请务必将compile 'com.google.android.gms:play-services-identity:8.+'添加到build.gradle文件中的相关内容中(查看here以获取要使用的最新版本号。)