Android AccountPicker "Добавить аккаунт" не обновляет параметры

Когда мое приложение запускается, я бы хотел попросить моих пользователей создать Account или выбрать из существующих. Я реализовал Authenticator (расширенный AccountAuthenticatorActivity, AbstractAccountAuthenticator, сделал Service) Кажется, работает, я могу создать новые учетные записи из настроек / учетных записей.

Когда я начинаю AccountPickerЯ получаю список уже созданных аккаунтов. Когда я нажимаю Add acccount это показывает мой Account создание Activity, Но когда я закончу с созданием аккаунта, завершу это действие и вернусь к AccountPicker Я не вижу новую опцию вновь созданного Account, Хотя, если я перезапущу приложение, недавно созданный Account находится в списке.

Как я начинаю AccountPicker:

Intent intent = accountManager.newChooseAccountIntent(null, null, new String[]{"test_namespace"}, null, null, null, null);
startActivityForResult(intent, TEST_CODE);

Мои вопросы:

  • Это должно работать так?
  • Могу ли я перезагрузить содержимое AccountPicker после того как я создал новыйAccount?
  • Могу ли я просто вернуть Intent с недавно созданным Account когда я вернусь из Account создание Activity?

1 ответ

В моей деятельности по аутентификации, после того как пользователь аутентифицируется на сервере, я проверяю существующие учетные записи и явно добавляю учетную запись, если ее там нет:

    boolean accountRegistered = false;
    Account account = new Account(username, AccountAuthenticator.ACCOUNT_TYPE_MYAPP);
    AccountManager acctMgr = AccountManager.get(this);
    Account[] accounts = acctMgr.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE_MYAPP);
    for (Account acct : accounts) {
        if (acct.equals(account)) {
            accountRegistered = true;
            break;
        }
    }

    if (accountRegistered) {
        acctMgr.setPassword(account, password);
    } else {
        acctMgr.addAccountExplicitly(account, password, null);
    }

После этого я вижу учетную запись в палитре.

Я не могу гарантировать, что это на 100% правильно; с недокументированными классами аутентификации мы все летим вслепую.

Другие вопросы по тегам