Подтвердить что ты не робот

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

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

4b9b3361

Ответ 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);

Но у меня возникают проблемы с этим:

AccountManager IllegalArgumentException: ключ null