我试图将SEND_TO_VOICEMAIL的值从0修改为1,反之亦然。我成功地修改了其他联系人的详细信息,如姓名,号码,昵称,电子邮件,ecc。但我需要改变SEND_TO_VOICEMAIL。
我试过很多种可能性,但这应该管用.我猜:
String rawContactId = "1";
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(
ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection( Data.RAW_CONTACT_ID + "=?" , new String[] { rawContactId })
.withValue(ContactsContract.RawContacts.SEND_TO_VOICEMAIL , 1)
.build()
);
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
e.printStackTrace();
} catch (OperationApplicationException e) {
e.printStackTrace();
}但逻辑猫说:
ERROR/AndroidRuntime(822):android.database.sqlite.SQLiteException:没有这样的列: send_to_voicemail:,同时编译: UPDATE数据集send_to_voicemail=?_id =?
我真的不知道该怎么做了。任何帮助都会很感激的。谢谢。
发布于 2011-09-04 11:17:21
根据[手册,您要查找的SEND_TO_VOICEMAIL字段不在ContactsContract.Data表中,而是在ContactsContract.Contacts表中。看来你是在修改错误的表格。
有关每个表中的字段,请参见ContactsContract.Data和ContactsContract.Contacts。
发布于 2012-09-30 17:42:23
最好是通过ContentProvider Contacts.CONTENT_URI进行修改。
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(Contacts.CONTENT_URI)
.withSelection(Contacts._ID + "=?", new String[]{hmout.get("cid").toString()})
.withValue(Contacts.SEND_TO_VOICEMAIL, 1)
.build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
Log.e("Exception: ", e.getMessage());
}https://stackoverflow.com/questions/7298767
复制相似问题