Получать изменения контакта (добавлено, удалено и изменено)

Разве нет метки времени для каждого контакта?

Мне нужно сообщить об изменении (добавить, удалить или изменить) контакту. Я реализовал ContentObserver , но через этот метод я могу получить уведомление только в том случае, если изменение происходит в контакте, но я не знаю, какой контакт был изменен! Какие-либо предложения?

Проверьте КонтактыКонтракт.RawКонтакты Колонка

 int DIRTY 

Read / write Флаг, указывающий, что VERSION изменилась, и эта строка должна быть синхронизирована по своей учетной записи. Значение устанавливается на «1» автоматически, когда изменяется необработанный контакт, если только в URI не указан параметр запроса CALLER_IS_SYNCADAPTER. Адаптер синхронизации всегда должен предоставлять этот параметр запроса, чтобы предотвратить ненужную синхронизацию: пользователь меняет некоторые данные на сервере, адаптер синхронизации обновляет контакт на телефоне (без флага CALLER_IS_SYNCADAPTER), который устанавливает флаг DIRTY, который запускает синхронизацию Внесите изменения на сервер.

Этот столбец используется адаптерами синхронизации для запуска синхронизации для контакта при изменении контакта. Проверьте, получаете ли вы что-нибудь от этого.

Я должен был сделать что-то подобное. То, что я сделал, это синхронизировать по времени. Я отслеживаю последнее время, когда контакт был обновлен с использованием поля:

 ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP 

И затем я продолжаю свою синхронизацию и каждый раз обновляю свою переменную-член до последнего времени синхронизации. Когда синхронизация завершена, это последнее время синхронизации контактов.

Когда наблюдатели изменений регистрируют что-то, я запрашиваю контент-провайдера для всех строк, затронутых после этого времени. И затем я перебираю курсор и обрабатываю каждую строку.