【发布时间】:2014-07-10 02:32:03
【问题描述】:
由于我的应用程序使用来自 android.provider.ContactsContract.Data (API > 11) 和 ContactsContract.Contacts.CONTENT_URI (API Contacts。
我已尝试registerContentObserver() 反对这些提供商。但它会调用我的ContentObserver,即使我一拨打电话就尝试从设备呼叫一个人。它确实触发了我的ContentObserver,这对我没有用处,因为Contacts Provider 中没有内容更改。
根本原因:
似乎LAST_TIME_CONTACTED 或ContactsContract.Contacts.CONTENT_URI 中的某些内容会在从ContentObserver 合法唤醒的设备发出呼叫时发生变化。
试过了:
private class ContactsContentObserver extends ContentObserver {
public ContactsContentObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Zname.getPreferences().setRefreshContact(true);
}
}
在OnCreate() 的Activity 中注册ContentObserver
ContactsContentObserver contactsContentObserver = new ContactsContentObserver();
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, false, contactsContentObserver);
在registerContentObserver 上尝试将notifyForDescendents 用作false。仍然会触发ContentObserver
问题:
如何注册ContentObserver 触发当且仅当联系人信息在除Last_Time_Contacted 或其后代之外的CRUD(创建、更新、删除)下?
【问题讨论】:
标签: android android-contentprovider contentobserver