#android #contacts #adapter #sync
#Android #Контакты #адаптер #синхронизация
Вопрос:
Я написал приложение, которое использует пользовательский адаптер синхронизации для контактов, и оно идеально подходит для синхронизации / добавления / редактирования контактов. Однако я не могу понять, как заставить мое приложение (или службу адаптера синхронизации) получать уведомления, когда контакт был удален на локальном устройстве. Теперь вот сценарий:
- Пользователь удаляет контакт с помощью собственного приложения «Контакты»
- Этот контакт помечается для удаления и удаляется из моего пользовательского адаптера синхронизации (он больше не отображается в приложении «Контакты»)
- Во время следующей синхронизации мой адаптер синхронизации видит, что контакт был помечен для удаления, но нет метки времени, чтобы узнать, когда это было сделано
Я хотел бы, чтобы мое приложение уведомлялось, когда пользователь удаляет контакт на шаге 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.