有没有办法确定哪个联系人发生了变化?
我知道我可以为URI注册一个ContentObserver,但它只会在某些内容发生变化时触发,我该如何知道哪个联系人发生了变化?该联系人的变化是什么?有没有办法找出来?
我的应用涉及桌面客户端,我不希望每次连接时都将所有联系人都发送到桌面。所以我想跟踪自上次桌面连接以来发生的变化。
提前致谢!
P.S。我正在使用API Level 5 +
答案 0 :(得分:3)
没有办法让哪个联系人改变了
c& p来自与此主题相关的回复here
我的应用程序基类中有这段代码。
private ContentObserver contactObserver = new ContactObserver();
private class ContactObserver extends ContentObserver {
public ContactObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
// Since onChange do not sent which user have been changed, you
// have to figure out how to match it with your data.
// Note: Contact is one of my classes.
for (Contact contact : getContacts()) {
if (!contact.isLinked())
continue;
String selection = ContactsContract.Data._ID + " = ?";
String[] selectionArgs = new String[] { contact.getSystemId() };
String[] projection = new String[] { ContactsContract.Data.DISPLAY_NAME };
Cursor cursor = getContentResolver().query(
ContactsContract.Contacts.CONTENT_URI, projection,
selection, selectionArgs, null);
if (!cursor.moveToFirst())
return;
String name = cursor.getString(0);
if (contact.getUsername().equalsIgnoreCase(name))
continue;
contact.setUserName(name);
}
}
}
关于投射检查here
的内容希望这有帮助