2

私の電話と同期されているすべてのGmailIDを取得している次のコードがありますが、ユーザーが最初に登録するメインのGmailIDが必要です。他のすべての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をGoogleのC2DMを使用したプッシュ通知に使用したいと思います。

4

3 に答える 3

6

答えはありますが、それは正しい方法ではありませんでした。google(gmail)に関連付けられているすべてのアカウントを取得し、Gmailと同期するメールIDを入力すると、スタックが作成され、0番目の位置に、ユーザーが最初に入力したプライマリGmailIDを取得します。彼の電話のスイッチを入れた。

    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

探しているタイプのアカウントが複数見つかった場合は、おそらくユーザーに選択させる必要があります。Android3には「プライマリアカウント」の区別はありません。最初に追加されたアカウントであるかどうかに関係なく、デバイスから任意のアカウントを削除できます。

于 2011-05-17T18:59:43.143 に答える
0

次のコードはメールアドレスを取得し、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);
        }
    }
于 2014-05-12T08:27:58.057 に答える