我正在试图弄清楚Android联系人中是否有某个属性表明联系人是否已被修改。
我读到可以通过ContactsContract.Contacts.Entity.VERSION字段读取联系人的版本,但我无法检索其值。我总是得到一个IllegalArgumentException。
有人知道如何获取联系人的版本,或者是否有其他方法可以查明自上次扫描地址簿以来联系人是否已被修改?
答案 0 :(得分:3)
下面是代码,我没有测试过,因为我忙于工作。
public void getVersion() {
//specify which fields of RawContacts table to be retrieved.
String[] projection = new String[] {RawContacts.VERSION};
//query the RawContacts.CONTENT_URI
Cursor cur = mContext.getContentResolver().query(RawContacts.CONTENT_URI, projection,null,null,null);
while(cur.moveToNext()){
String version = cur.getString(cur.getColumnIndex(RawContacts.VERSION));
Log.i("VersionRetriever", version);
}
//Always remember to close the cursor. Otherwise it leads to side-effects.
cur.close();
}
答案 1 :(得分:0)
尝试使用RawContacts.CONTACT_STATUS_TIMESTAMP而不是RawContacts.VERSION。
答案 2 :(得分:0)
如果您想知道特定数据类型(如电话或姓名)是否已更改,您可以检查Data.DATA_VERSION(但在Data.CONTENT_URI上)。