2

我有以下代码获取与我的手机同步的所有 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);
    }

我已经看过Roman链接,但无法以正确的方式进行转换。我想使用这个主要的电子邮件 ID 使用来自谷歌的 C2DM 进行推送通知。

4

3 回答 3

6

我有一个答案,但这不是正确的方法。当我获取与 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 以发送电子邮件,我想知道他们是如何正在做?

于 2011-05-18T08:49:09.073 回答
1

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

于 2011-05-17T18:59:43.143 回答
0

Following code gets the email addresses and dosn't require any GET_ACCOUNTS permission....

  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);
        }
    }
于 2014-05-12T08:27:58.057 回答