我不确定您当前正在注册哪个 Uri 以进行更新,但是当您注册您的 时ContentObserver,您不能只注册一个直接指向您感兴趣的联系人的个人 Uri 吗?然后,您的观察者只会在您感兴趣的联系人被修改时收到通知。SDK 文档标题“查找 URI”中的部分对此进行了更多讨论:
http://developer.android.com/resources/articles/contacts.html
查找键对于每条记录(行)都是唯一的,所以我可以想象做这样的事情就是你所追求的?
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
getContentResolver().registerContentObserver(lookupUri, false, myObserver);
并为您列表中的每个联系人执行此操作。
对于添加的联系人
我能看到的最好方法是每次ContentObserver更改时重新查询联系人表的游标(重新查询很快,即使您经常使用大量数据进行查询),并保持最高已知的 CONTACT_ID 值。每当光标包含超出您存储的 ID 时,它就被添加了。
另外,如果您还没有看过这段对话,那可能是一本好书。Dianne 似乎很坚持他们不让内容更改的细节ContentObserver
干杯。