当我们打开手机并注册时,如何获取第一个Gmail帐户详细信息



>我有以下代码获取与我的手机同步的所有Gmail ID,但我想要用户第一次注册的主Gmail ID。因为所有其他 gmail 帐户(不是主帐户)如果我想我可以随时删除,但要删除主帐户,我们还必须做其他事情,所以这就是为什么我想让主帐户用于我的应用程序。

这是我的代码,我认为在其中添加一些过滤器,我可以做到这一点,但无法正确获取内容。

Account[] accounts=AccountManager.get(this).getAccountsByType("com.google");
    for(Account account: accounts)
    {
        String possibleEmail=account.name;
        Log.d("Possible email id's of user", possibleEmail);
    }

我已经看到了罗马链接,但无法以正确的方式转换它。我想使用此主电子邮件 ID 通过谷歌的 C2DM 推送通知。

我有一个答案,但这不是一个正确的方法。当我获得与google(gmail)关联的所有帐户时,并且当我们输入要与gmail同步的电子邮件ID时,将创建一个堆栈,并且在第0位,我获得了用户在打开手机时首次输入的主要Gmail ID。

    Account[] accounts=AccountManager.get(this).getAccountsByType("com.google");
    String myEmailid=accounts[0].toString();
    Log.d("My email id that i want", myEmailid);
    for(Account account: accounts)
    {
        String possibleEmail=account.toString();
        Log.d("Possible email id of user", possibleEmail);
    }

如果有人有更好的解决方案,请告诉我,我在 2 部手机上测试了此示例并且工作正常,但我看到许多应用程序正在获取用户的主要电子邮件 ID 以发送电子邮件,我想知道他们过得怎么样?

如果您找到多个您要查找的类型的帐户,则可能应该让用户选择。Android 3 没有"主帐户"的区别;您可以从设备中删除任何帐户,无论它是否是添加的第一个帐户。

以下代码获取电子邮件地址,不需要任何GET_ACCOUNTS权限。

  private static final int REQUEST_CODE_EMAIL = 1;
        email = (TextView) findViewById(R.id.email);
        ...
        try {
            Intent intent = AccountPicker.newChooseAccountIntent(null, null,
                    new String[] { GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE }, false, null, null, null, null);
            startActivityForResult(intent, REQUEST_CODE_EMAIL);
        } catch (ActivityNotFoundException e) {
            // TODO
        }
        ...
    @Override
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
        if (requestCode == REQUEST_CODE_EMAIL && resultCode == RESULT_OK) {
            String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
            email.setText(accountName);
        }
    }

最新更新