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% правильно; с недокументированными классами аутентификации мы все летим вслепую.