Храните дополнительные данные в Диспетчере учетных записей Android

Я хотел бы использовать учетную AccountManger Android AccountManger для синхронизации моего веб-сервиса и приложения (стандартная синхронизация контактов и каландра), однако AccountManager только сохраняет имя пользователя и пароль. Мой веб-сервис принимает три учетных данных: имя пользователя, пароль и учетную запись. Какова наилучшая практика для хранения третьей части информации?

Как объяснил Паблиско, вы можете использовать способность AccountManager хранить произвольные пользовательские данные с помощью параметра userData Bundle addAccountExplicitly () :

  final Bundle extraData = new Bundle(); extraData.putString("someKey", "stringData"); boolean accountCreated = am.addAccountExplicitly(account, password, extraData); 

В дальнейшем, например, в методе getAuthToken () вашего Authenticator, вы можете получить данные, относящиеся к учетной записи, с которой работаете:

  String myData = am.getUserData(account, "someKey"); 

К сожалению, на момент написания этой статьи вы можете получать только строки, поэтому ваши данные должны быть сохранены в виде строки, когда вы сначала создаете Bundle. Надеюсь, это поможет кому-то.

Из документации Android она должна быть выполнена либо с помощью пакета UserData Bundle, когда добавлена ​​учетная запись:

 AccountManager manager = AccountManager.get(context); manager.addAccountExplicitly(account, null, userData); 

Или добавление явно значений:

 manager.setUserData(account, KEY, value); 

Но у меня проблемы с этим:

AccountManager IllegalArgumentException: ключ имеет значение null