Как удаление контакта работает с пользовательским адаптером синхронизации в Android?

#android #contacts #adapter #sync

#Android #Контакты #адаптер #синхронизация

Вопрос:

Я написал приложение, которое использует пользовательский адаптер синхронизации для контактов, и оно идеально подходит для синхронизации / добавления / редактирования контактов. Однако я не могу понять, как заставить мое приложение (или службу адаптера синхронизации) получать уведомления, когда контакт был удален на локальном устройстве. Теперь вот сценарий:

  1. Пользователь удаляет контакт с помощью собственного приложения «Контакты»
  2. Этот контакт помечается для удаления и удаляется из моего пользовательского адаптера синхронизации (он больше не отображается в приложении «Контакты»)
  3. Во время следующей синхронизации мой адаптер синхронизации видит, что контакт был помечен для удаления, но нет метки времени, чтобы узнать, когда это было сделано

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

Спасибо.

Комментарии:

1. Настроен ли ваш syncadapter на автоматическую синхронизацию и включена ли функция master-sync-automatically? В этом случае поведение, которое вы описываете, очень странное — синхронизация должна быть запущена вскоре после удаления в собственном приложении контактов. Методы для настройки / чтения автоматической синхронизации доступны через класс ContentResolver .

2. Он определенно настроен на синхронизацию. при создании учетной записи синхронизации я использую следующие 2 строки: ContentResolver.setIsSyncable(acct, ContactsContract. ПОЛНОМОЧИЯ, 1); ContentResolver.setSyncAutomatically(acct, ContactsContract. ПОЛНОМОЧИЯ, правда);

3. Какова основная настройка синхронизации, ContentResolver#getMasterSyncAutomatically()? Если это тоже правда, с вашим адаптером происходит что-то очень странное.

4. Включена основная синхронизация. Я думаю, что я приближаюсь к пониманию этого — синхронизация запускается, но для этого требуется более минуты после удаления контакта. Я предполагаю, что где-то в ОС Android есть настройка, которая задерживает синхронизацию в случае, если в контактах несколько изменений, и он хочет выполнить их все сразу. В противном случае я понятия не имею, почему это занимает так много времени

5. Ну да, это не сразу — оно ждет на случай, если «изменения накапливаются», но, по крайней мере, кажется, что ваше решение работает. Gl.