AccountManager возвращает только одну учетную запись в расширенной активности - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть простое приложение, которое представляет собой расширенное действие, которое регистрирует основную учетную запись пользователя при доступе к определенному тегу 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}"
...