通过Android访问Google帐户ID /用户名

您如何在代码中访问用户的Google帐户ID /用户名? 我正在构建一个将调用Web服务来存储数据的应用程序,并且我想要确定提交数据的人员的身份。


我遇到了同样的问题,并为我解决了这两个链接:

第一个是这样的:我如何检索在Android手机上登录的Google帐户?

其中介绍了检索与手机关联的帐户的代码。 基本上你会需要这样的东西:

AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
Account[] list = manager.getAccounts();

并在AndroidManifest.xml中添加权限

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

此外,如果您正在使用模拟器,以下链接将帮助您使用帐户进行设置:Android模拟器 - 创建用户帐户时遇到问题

基本上,它说,你必须创建一个基于API级别的Android设备,而不是SDK版本(通常是这样)。


此方法获取Google用户名:

 public String getUsername() {
    AccountManager manager = AccountManager.get(this);
    Account[] accounts = manager.getAccountsByType("com.google");
    List<String> possibleEmails = new LinkedList<String>();

    for (Account account : accounts) {
        // TODO: Check possibleEmail against an email regex or treat
        // account.name as an email address only for certain account.type
        // values.
        possibleEmails.add(account.name);
    }

    if (!possibleEmails.isEmpty() && possibleEmails.get(0) != null) {
        String email = possibleEmails.get(0);
        String[] parts = email.split("@");
        if (parts.length > 0 && parts[0] != null)
            return parts[0];
        else
            return null;
    } else
        return null;
}

简单的这个方法调用....

并在Gmail中获取Google用户ID:

 accounts = AccountManager.get(this).getAccounts();
    Log.e("", "Size: " + accounts.length);
    for (Account account : accounts) {

        String possibleEmail = account.name;
        String type = account.type;

        if (type.equals("com.google")) {
            strGmail = possibleEmail;

            Log.e("", "Emails: " + strGmail);
            break;
        }
    }

在清单中添加权限后;

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

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

检索登录用户的个人资料信息使用GoogleSignInResult.getSignInAccount方法请求当前登录用户的个人资料信息。 登录意图成功后,您可以调用getSignInAccount方法。

GoogleSignInResult result = 
Auth.GoogleSignInApi.getSignInResultFromIntent(data);
GoogleSignInAccount acct = result.getSignInAccount();
String personName = acct.getDisplayName();
String personGivenName = acct.getGivenName();
String personFamilyName = acct.getFamilyName();
String personEmail = acct.getEmail();
String personId = acct.getId();
Uri personPhoto = acct.getPhotoUrl();
链接地址: http://www.djcxy.com/p/70151.html

上一篇: Accessing Google Account Id /username via Android

下一篇: TI RF430FRL152HEVM NFC NDEF formatting