Я внедряю систему входа для приложения Android, используя встроенную систему учетных записей (с API-интерфейсами AccountManager).
Все хорошо и хорошо на Android 2.2+, но на Android 2.1 не включая SyncAdapter вызывает перезагрузки на экране настроек учетной записи (см. http://code.google.com/p/android/issues/detail?id=5009 и AccountManager без адаптера синхронизации?)
Чтобы обойти это, я реализовал заглушку SyncAdapter, которая просто возвращает null
из IBinder onBind(Intent intent)
, и добавила соответствующие материалы в манифест. Это устраняет проблему перезагрузки на Android 2.1.
Однако это еще одна проблема: после добавления учетной записи система Android, спустя некоторое время, инициирует синхронизацию учетной записи. Хотя ошибок нет (действительно, мой SyncAdapter ничего не делает, он не имеет возможности вызывать ошибки, если не возвращая null
), значок синхронизации остается на панели уведомлений вверху. Это приводит к тому, что система синхронизации Android поддерживает постоянную блокировку слежения, не позволяя устройству спать.
Учетная запись не отображает никаких синхронизируемых компонентов на экране настроек учетной записи (в заголовке "Данные и синхронизация" ) и всегда отображает "Синхронизация отключена" для статуса синхронизации в списке учетных записей (даже если значок синхронизации отображается в панели уведомлений). Отключение синхронизации учетных записей не устраняет проблему. Удаление учетной записи останавливает проблему.
Мое предположение: я не должен возвращать null. Должен ли я возвращать базовую реализацию ThreadedSyncAdapter? Любая помощь в получении системы учетных записей без соответствующей синхронизации, работающей правильно на 2.1 и 2.2+, очень ценится.