不是每个联系人都有时间戳吗?
我需要收到联系人的更改(添加、删除或更改)通知。我已经实现了ContentObserver
,但是通过这种方法,我只能在联系人发生更改时收到通知,但我不知道哪个联系人已被修改!有什么建议么?
不是每个联系人都有时间戳吗?
我需要收到联系人的更改(添加、删除或更改)通知。我已经实现了ContentObserver
,但是通过这种方法,我只能在联系人发生更改时收到通知,但我不知道哪个联系人已被修改!有什么建议么?
检查 ContactsContract.RawContacts 列
int DIRTY
read/write Flag 表示 VERSION 已更改,此行需要由其拥有的帐户同步。只要原始联系人更改,该值就会自动设置为“1”,除非 URI 指定了 CALLER_IS_SYNCADAPTER 查询参数。同步适配器应始终提供此查询参数以防止不必要的同步:用户更改服务器上的某些数据,同步适配器更新手机上的联系人(不带 CALLER_IS_SYNCADAPTER 标志)标志,该标志设置 DIRTY 标志,触发同步到将更改带到服务器。
同步适配器使用此列在修改联系人时启动联系人同步。检查你是否从中得到任何东西。
我不得不做类似的事情。我所做的是根据时间戳进行同步。我使用以下字段跟踪联系人更新的最新时间:
ContactsContract.Contacts.CONTACT_LAST_UPDATED_TIMESTAMP
然后我继续我的同步操作,每次都将我的成员变量更新为最新的同步时间。同步完成后,这是最后一次联系人同步时间。
当变更观察者注册某些内容时,我会向内容提供者查询在此时间之后受影响的所有行。然后我遍历游标并处理每一行。