Я пытаюсь понять всю концепцию адаптеров синхронизации за последние пару недель и у вас мало вопросов относительно функциональности.Android - Слушайте изменения в контактах android и получите дельта
Я хочу слушать все изменения в андроида контактов
Подход 1:
Я создал пользовательский счет, а также создал синхронизации адаптера. Написал прослушиватель вещания, прослушивающий ContactsContract.Contacts.CONTENT_URI
, и в public void onChange(boolean selfChange)
от ContentObserver
класс i я звоню ContentResolver.requestSync(account,ContactsContract.AUTHORITY,bundle)
, который выступает в качестве точки запуска, чтобы запустить адаптер синхронизации, когда когда-либо происходит изменение данных контактов.
Все выглядит хорошо, пока здесь, но в классе SyncAdapter я не получаю никаких данных в SyncResult
переменной в onPerofmSync
Так как я могу получить дельта изменения от контактов?
Исправьте меня, если это не способ запуска адаптера синхронизации.
подход 2:
Я последовал некоторый пример, где они говорили о запросах к базе данных контактов, где dirtyFlag
установлен в 1. я был в состоянии получить изменения, но мой вопрос
кто установит это значение
dirtyFlag
обратно в '0'?
Если мне нужно это сделать, то разрешите сказать, что на телефоне есть несколько приложений, которые делают то же самое. Если какое-либо приложение устанавливает флаг в '0', прежде чем мое приложение попытается получить доступ к этой информации. Я буду пропускать все изменения.
Подход 3:
запросов базы данных и следить за version
для каждого контакта в моей базе данных, и если «версия» изменилось считает, что в изменении контакта. Это похоже на тяжелый процесс.
Наконец, мой вопрос - это лучший способ прослушать изменения в контактах на устройстве пользователя?
Да, это третий подход, как в моем вопросе. – Prakash
yep, так вот что я буду делать, это не такой тяжелый процесс, и я не вижу никакого способа сделать это без запроса, который просматривает все контакты. – marmor
Итак, каждый раз, когда есть самый короткий триггер вызова «registerContentObserver (ContactsContract.Contacts.CONTENT_URI), мы должны выполнить запрос всех контактов, чтобы увидеть, что изменилось, и что у нас есть? –