У меня есть простое приложение, которое представляет собой расширенное действие, которое регистрирует основную учетную запись пользователя при доступе к определенному тегу NFC.
К сожалению, по какой-то причине, хотя я вижу несколько учетных записей, подготовленных на моем устройстве Samsung, приведенный ниже код возвращает только одну, а не полный список.Похоже, что он возвращает идентификатор учетной записи Samsung, а не идентификатор Google.
Это простой случай ошибки пользователя или есть какой-то другой способ получить идентификатор Google?
Этот код был обновлен, чтобы отразить надлежащую функциональность.Закрытие этого.
Фрагмент кода здесь:
public class MainActivity extends Activity {
.
.
.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.message);
final Context context = getApplicationContext();
Thread myThread = new Thread(
new Runnable() {
public void run() {
try {
GoogleAuthUtil.requestGoogleAccountsAccess(context);
} catch (Exception e) {
if (e instanceof UserRecoverableAuthException) {
startActivityForResult(((UserRecoverableAuthException)
e).getIntent(), MY_PERMISSIONS_REQUEST_READ_CONTACTS);
} else {
Log.e("SignIn", "Exception in getting google accounts" + e);
}
}
}
});
myThread.start();
AccountManager accountManager = AccountManager.get(context);
Account[] accounts = accountManager.getAccounts();
ClientRequest request = new ClientRequest (accounts);
handleIntent(getIntent());
}
.
.
.
}
Это то, что я вижу, это возвращается в отладчике, где foo@bar.net - SamsungИдентификатор на моем тестовом устройстве:
accounts[0] = {Account@4923} "Account {name=foo@bar.net, type=com.osp.app.signin}"
this = {MainActivity@4856}
savedInstanceState = null
context = {Application@4867}
accountManager = {AccountManager@4903}
accounts = {Account[1]@4913}
0 = {Account@4923} "Account {name=foo@bar.net, type=com.osp.app.signin}"