1

次のコードを使用して、Android のプライマリ メール ID を取得しています。

       String possibleEmail = null;

    Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
    Account[] accounts = AccountManager.get(getBaseContext()).getAccounts(); {
    for (Account account : accounts) {
    if (emailPattern.matcher(account.name).matches()) {
    possibleEmail = account.name;
    }
    }

    final TextView user = (TextView)findViewById(R.id.username);
    user.setText(possibleEmail);}

}

このコードの問題は、ユーザーがデバイスに新しい電子メール アカウントを追加すると、異なる電子メール ID が返されることです。たとえば。アプリのインストール時の私のデバイス。Playストアに使用されるプライマリGmailアカウントであるメールアカウントは1つだけでしたが、別のアクティブな同期メールIDを追加すると、このコードは2番目のIDを返します. AndroidマーケットIDのみをキャプチャしたい。私がそこにこだわる理由は、すでに mysql db にこれらのメール ID を登録しているからです。私の会社の従業員のみがこのアプリを使用する必要があり、Android デバイス (登録済みの Gmail ID) からアクセスする場合、認証は必要ありません。

4

1 に答える 1

0

あなたが使用しているそのコードは、電子メールアドレスを持つすべてのアカウントをループpossibleEmailし、最後に見つかったものに設定しています.

おそらく、あなたが望むのは、アカウントを見つけて、type="com.google"複数ある場合はユーザーにリストを表示し、ログインに使用するGoogleアカウントを選択できるようにすることです.

これは、Googleアカウントを見つけるために私にとってはうまくいくようです:

TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText("");

Pattern emailPattern = Patterns.EMAIL_ADDRESS;
Account[] accounts = AccountManager.get(getBaseContext()).getAccounts();
for (Account account : accounts)
{
    if (emailPattern.matcher(account.name).matches() && account.type.equals("com.google"))
    {
        tv.append(account.name + "\n");
    }
}
于 2013-10-29T17:32:59.410 に答える