Храните дополнительные данные в Android Account Manager - PullRequest
13 голосов
/ 15 августа 2011

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

Ответы [ 2 ]

28 голосов
/ 16 декабря 2011

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

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

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

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

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

2 голосов
/ 02 декабря 2011

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

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

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

manager.setUserData(account, KEY, value);

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...