Если говорить конкретно, у меня есть «Droid HTC incredible, Android версия 2.2, Baseband 2.15.00.07.28, ядро 2.6.32.17-g9a2fe16, сборка 3.26.605.1, номер программного обеспечения 3.26.605.1
I»Eclipse и Android SDK установлены и работают нормально.Приятно, как я могу отлаживать и выполнять пошаговый код на моем Droid в Eclipse.
Я прочитал несколько книг и попробовал все примеры на практике, и я опираюсь на несколько лет разработки программного обеспеченияопыт (> 10 лет) в других объектно-ориентированных языках, включая C ++, но не в Java, но я довольно быстро его подхватываю.
Я также скачал, как мне кажется, версию исходного кода.код, запущенный на моем Droid, запускающем repo / git, и я копался в коде пакетов / apps / AccountsAndSyncSettings FRG83G / src / com / android / settings.
Сейчас.Я хочу написать небольшое приложение, которое сообщит мне, когда произойдет сбой синхронизации.Царапина, которую я пытаюсь уловить, состоит в том, что после того, как я сделал большое количество изменений, используя интерфейс контактов GMail (например), и «Droid не может их синхронизировать (возможно, слишком много удаляет?)Поэтому, когда синхронизация постоянно происходит сбой, я хочу отобразить значок панели уведомлений, чтобы сообщить мне об этой ошибке синхронизации.Без такого приложения первое указание на то, что оно перестало работать, - это когда я замечаю пропущенную контактную информацию, возможно, через 2-3 дня.
Итак, логика может показывать, что мое маленькое приложение должно быть SyncStatusObserver длябыть информированным, когда действие синхронизации меняет статус, затем получить SyncStatusInfo для этой синхронизации и отметить, какая синхронизация не удалась и когда.Из того, что я могу собрать, это означает реализацию SyncStatusObserver и подключение его к трансляции с вызовом ContentResolver.addStatusChangeListener.Я реализовал это и вижу уведомления.
Мне кажется, я понимаю, что объектная модель в том, что Тип учетной записи имеет ноль для многих учетных записей, и что каждая учетная запись обозначает тип данных, которыевыполняется синхронизация (контакты и календарь и т. д.).
Единственный метод SyncStatusObserver, onStatusChanged (final int which), имеет параметр int which, который, по-видимому, пытается указать, какой тип учетной записи иликакие учетные записи только что изменили его статус синхронизации.Я написал и соединил это и получаю эти вызовы методов, как и следовало ожидать, когда тип данных синхронизирован.Я наблюдал это в окне ведения журнала отладчика Eclipse во время выполнения моего приложения.
Мой вопрос заключается в том, как связать единственное целое значение типа int с типом учетной записи и / или полномочиями учетной записи?Я хотел бы вызвать SyncInfo getCurrentSync () и записать учетную запись, полномочия и время начала.(Почему время начала? Разве нам не нужны время окончания и состояние завершения?)
Поиск здесь по stackoverflow, я нахожу в сообщении Как можно прослушать прогресс из Android SyncAdapter? что SyncStatusObserver довольно бесполезен, поскольку он не передает очень много полезной информации с помощью одного целочисленного параметра.Ой.ОК.
Я думаю, что есть еще один способ взглянуть на этот вопрос: на HTC Incredible, когда вы находитесь на главном экране и выбираете Меню -> Настройки -> Аккаунты и синхронизация -> Google (учетная запись в списке), пользовательский интерфейс показывает в последний раз, когда каждый тип учетной записи учетной записи GMail был успешно синхронизирован.Где находится код, который получает эту информацию, а также ту же информацию, что и я, и я хочу получать эту информацию после каждого вызова метода SyncStatusObserver onStatusChanged.
При публикации Дата последнего обновления Syncadapter Что в основном говорит о том, что последняя дата / время синхронизации не отображается текущим кодом Droid.
Есть ли какой-либо другой способ получения последней успешной даты / времени синхронизации для каждого из SyncAdators?Я очень хочу почесать свой зуд (так сказать).