Intereting Posts
Android: как интегрировать внешнее устройство сканера штрих-кода в приложение «Моя» Android Exclamatory red mark Android: imageSwitcher подходит для экрана Панель инструментов – findViewbyID, возвращающая значение null Могу ли я написать приложение в javascript / HTML / CSS и продать его в магазине приложений, в Google Play и в магазине мобильных приложений для Microsoft? Получение и фильтрация данных GPS GPS, как улучшить информацию о местоположении Почему требуется категория HOME? Android LocationRequest: получить обратный вызов, когда истекает срок действия запроса OnClick или onItemClick при приостановке результатов в "IllegalStateException: не удается выполнить это действие после onSaveInstanceState" Можно ли программно отключить тихий режим в андроиде? Разрешение для Android – CHANGE_COMPONENT_ENABLED_STATE Каков лучший способ получить строку из BufferedReader Android, как изменить ширину и высоту элемента IllegalArgumentException с помощью Mockito PopupWindow – не работает на нескольких устройствах

Храните дополнительные данные в Диспетчере учетных записей 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