ContentObserver для прослушивания изменений контактов

Я действительно не понимаю, почему наблюдатель контента прослушивает изменения, которые не связаны с контактной информацией.

Я просто зарегистрировался на URI, который я хочу прослушать изменения:

getContentResolver().registerContentObserver(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, true, contactsObserver);

Но после звонка кому-то или отправки текстового сообщения он срабатывает и вызывает метод onChange в ContentObserver. Поэтому мне нужно повторно синхронизировать весь список контактов с моим приложением, хотя мне это не нужно.

Единственное поле, которое меня интересует:

  • КонтактыContract.CommonDataKinds.Phone.CONTACT_ID
  • КонтактыContract.CommonDataKinds.Phone.DISPLAY_NAME
  • КонтактыКонтракт.ОбщиеДанныеВиды.Телефон.НОМЕР

Какие изменения я должен внести, чтобы прослушать изменения для этих элементов БД?


person Coldfish    schedule 05.02.2013    source источник
comment
есть какое-либо решение, если да, пожалуйста, помогите мне .. у меня такая же проблема с прошлой 1 недели   -  person Ankita Singh    schedule 15.12.2016
comment
@user3475052 user3475052 последний ответ может вас заинтересовать.   -  person Boris    schedule 26.01.2017
comment
Все еще сталкиваюсь с этой проблемой.   -  person GensaGames    schedule 10.05.2017


Ответы (1)


В базе данных контактов есть поле ContactsContract.Contacts.TIMES_CONTACTED. Это поле обновляется каждый раз, когда вы связываетесь с кем-то из своего списка контактов.

Можно даже обновить это поле с помощью вашего собственного приложения, что означает, что если вы свяжетесь с любым контактом с помощью приложения, которое обновляет это поле, будет вызван ваш метод onChange().

person Tal Mantelmakher    schedule 26.01.2017
comment
Таких полей больше, например ContactsContract.ContactOptionsColumns.LAST_TIME_CONTACTED. - person Tal Mantelmakher; 26.01.2017
comment
это очень старый вопрос, не уверен, что OP все еще ждет, но, может быть, @user3475052 будет заинтересован? - person Boris; 26.01.2017