次のコードを使用して、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) からアクセスする場合、認証は必要ありません。