Я хотел бы использовать android AccountManger
для синхронизации моего веб-сервиса и приложения (стандартная синхронизация контактов и каландра), однако AccountManager
появляется только для хранения имени пользователя и пароля. Мой веб-сервис принимает три учетных данных: имя пользователя, пароль и учетную запись. Какова наилучшая практика для хранения третьей части информации?
Храните дополнительные данные в Диспетчере учетных записей Android
Ответ 1
Как объяснил pablisco, вы можете использовать функцию AccountManager для хранения произвольных пользовательских данных через addAccountExplicitly() параметр_параллеля UserData:
final Bundle extraData = new Bundle();
extraData.putString("someKey", "stringData");
boolean accountCreated = am.addAccountExplicitly(account, password, extraData);
Позже, например, в вашем методе Authenticator getAuthToken() вы можете получить данные, относящиеся к учетной записи, с которой работаете:
String myData = am.getUserData(account, "someKey");
К сожалению, на момент написания этой статьи вы можете получать только строки, поэтому ваши данные должны храниться в виде строки при первом создании пакета. Надеюсь, это поможет кому-то.
Ответ 2
Из документации для Android она должна быть выполнена либо с помощью пакета UserData Bundle, когда добавлена учетная запись:
AccountManager manager = AccountManager.get(context);
manager.addAccountExplicitly(account, null, userData);
или явно добавить значения:
manager.setUserData(account, KEY, value);
Но у меня возникают проблемы с этим: