在Android联系人上设置SEND_TO_语音邮件

在Android联系人上设置SEND_TO_语音邮件,android,android-contacts,Android,Android Contacts,我正在尝试将SEND_to_VOICEMAIL的值从0修改为1,反之亦然。 我成功地修改了其他联系人的详细信息,如姓名、号码、昵称、电子邮件、ecc。。。但我需要把SEND_改成语音信箱 我尝试了很多可能性,但这应该行得通。。。我想: String rawContactId = "1"; ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperatio

我正在尝试将SEND_to_VOICEMAIL的值从0修改为1,反之亦然。 我成功地修改了其他联系人的详细信息,如姓名、号码、昵称、电子邮件、ecc。。。但我需要把SEND_改成语音信箱

我尝试了很多可能性,但这应该行得通。。。我想:

        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();
        }
字符串rawContactId=“1”;
ArrayList ops=新的ArrayList();
补充行动(
ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT\u URI)
.withSelection(Data.RAW_CONTACT_ID+“=?”,新字符串[]{RAW contactid})
.withValue(contacts contract.raw contacts.SEND_TO_语音信箱,1)
.build()
);
试一试{
getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
}捕获(远程异常){
e、 printStackTrace();
}捕获(操作应用程序异常e){
e、 printStackTrace();
}
但是logcat说:

错误/AndroidRuntime(822):android.database.sqlite.SQLiteException:否 此列:发送至语音信箱:,编译时:更新数据集 发送到语音信箱=?其中_id=

我真的不知道该试什么了。任何帮助都将不胜感激。
谢谢。

根据[手册],您要查找的“发送到”语音邮件字段不在Contacts contract.Data表中,而是在Contacts contract.Contacts表中。您似乎试图修改错误的表


有关每个表中的字段,请参见和。

最好通过
ContentProvider
联系人进行修改。CONTENT\u 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()); 
}
ArrayList ops=new ArrayList();
添加(ContentProviderOperation.newUpdate(Contacts.CONTENT\u URI)
.withSelection(Contacts._ID+“=?”,新字符串[]{hmout.get(“cid”).toString()})
.withValue(Contacts.SEND_TO_语音信箱,1)
.build());
试试{
getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
}捕获(例外e){
Log.e(“异常:,e.getMessage());
}

谢谢,这就是答案!我刚刚将“Contacts contract.Data”更改为“Contacts contract.Contacts”。我在三星S3上遇到问题,有人吗?
SEND\u to\u VOICEMAIL
标记来电工作吗?还是在来电前设置它工作?