Как реализовать учетную запись на Android без SyncAdapter

Я реализую систему входа в приложение для Android, используя встроенную систему учетных записей (с API AccountManager).

Все готово. хорошо и хорошо на Android 2.2+, но на Android 2.1 без SyncAdapter вызывает перезагрузку на экране настроек учетной записи (см. http: //code.google.com/p/android/issues/detail?id=5009 и AccountManager без SyncAdapter? )

Чтобы обойти это, я реализовал заглушку SyncAdapter, которая просто возвращает null из IBinder onBind (Intent intent) и добавляет соответствующие данные в манифест. Это решает проблему перезагрузки Android 2.1.

Однако это создает дополнительную проблему: после добавления учетной записи система Android через некоторое время инициирует синхронизацию учетной записи. Хотя ошибок не происходит (действительно, мой SyncAdapter ничего не делает, он не может вызывать ошибки, если только не возвращает null ), значок синхронизации остается на панели уведомлений вверху. Это приводит к тому, что система синхронизации Android поддерживает постоянную блокировку пробуждения , предотвращающую переход устройства в спящий режим.

Учетная запись не перечисляет какие-либо синхронизируемые компоненты на экране настроек учетной записи (под заголовком «Данные и синхронизация») и всегда отображает «Синхронизация отключена» для статуса синхронизации в списке учетных записей (даже если значок синхронизации отображается на панели уведомлений). Отключение синхронизации учетной записи не устраняет проблему. Удаление учетной записи решает проблему.

Думаю, я не должен возвращать null. Должен ли я возвращать базовую реализацию ThreadedSyncAdapter? Приветствуется любая помощь в получении системы учетных записей без соответствующей синхронизации, работающей должным образом в версиях 2.1 и 2.2+.

9
задан Community 23 May 2017 в 02:34
поделиться