【问题标题】:Getting the Gmail Id of the User In Android在 Android 中获取用户的 Gmail ID
【发布时间】:2013-09-07 23:03:22
【问题描述】:

我不知道这是否是正确的问题。我们如何获取登录到 Android 中的 Google Play 商店的用户的登录 ID。这可能与否。

【问题讨论】:

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


    【解决方案1】:

    据我所知,用户必须在他的 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" />
    

    【讨论】:

    • 仅供参考,除非用户明确授予您的应用权限(这是面向“联系人”权限组的用户的一部分),否则这对于 Android 6.0 及更高版本将无法可靠运行。有关检索电子邮件地址的替代方法,请参阅下面的答案。
    【解决方案2】:

    如果您使用的方法不需要通过 AndroidManifest.xml 请求权限,您可以使用 Google Play Services 的 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 以获取要使用的最新版本号)。

    【讨论】:

      猜你喜欢
      • 2013-11-28
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多