这个问题让我很久很担心。我尝试更新联系人display_name,它正在运行。
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ContentProviderOperation.Builder builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " +
ContactsContract.Data.MIMETYPE + "=?",
new String[{String.valueOf(id), ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE});
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName);
ops.add(builder.build());
try {
cr.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException | OperationApplicationException e) {
e.printStackTrace();
}
但是当我想要更新SORT_KEY_PRIMARY时,没有任何事情发生。
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ContentProviderOperation.Builder builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
builder.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " +
ContactsContract.Data.MIMETYPE + "=?",
new String[{String.valueOf(id), ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE});
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.SORT_KEY_PRIMARY, sort_key);
ops.add(builder.build());
try {
cr.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException | OperationApplicationException e) {
e.printStackTrace();
}
当我同时更新display_name和sort_key_primary时出错。
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.SORT_KEY_PRIMARY, pinyin);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName);
android.database.sqlite.SQLiteException:没有这样的列:sort_key(代码1):,同时编译:UPDATE数据SET sort_key =?,data11 =?,data1 =?,data2 =?,data10 =? WHERE _id =?