Android ContentObserver - 联系人 - 没有在线状态更新

时间:2013-02-12 19:54:52

标签: android contentobserver user-presence

我一直在ICS的框架中工作,看来Android Contacts Provider中的ContactsProvider2调用了 任何插入/更新后的notifyChange,不仅如此,它通过以下方式执行:

NotifyChange(ContactsContract.AUTHORITY_URI, null, syncToNetwork);

这意味着联系人AUTHORITY Uri上的任何插入/更新/删除都会触发内容观察者获取更新。虽然从理论上讲,这是相当不错的......看起来它也会通过Presence更新来触发。

如果我尝试在Data表上拉一个游标,它也会将数据表链接到presence,并且对presence的任何更新都有onLoadFinished来调用(CursorLoader)。

查看游标问题,看起来是因为ContactsProvider2调用

setTablesAndProjectionMapForData() 

反过来将Presnce / status列附加到每个数据行。

appendContactPresenceJoin(sb, projection, RawContacts.CONTACT_ID);
appendContactStatusUpdateJoin(sb, projection, ContactsColumns.LAST_STATUS_UPDATE_ID);
appendDataPresenceJoin(sb, projection, DataColumns.CONCRETE_ID);
appendDataStatusUpdateJoin(sb, projection, DataColumns.CONCRETE_ID);

是否有任何方法可以注册内容观察者以获取数据表的更新,从而更改实际获取Presence更改的更新?我相信存在曾经被排除在2.3 / 3.x中的Data.CONTENT_URI查询中..但看起来它已经改变了..

1 个答案:

答案 0 :(得分:0)

CONTENT_VCARD_URI怎么办?