ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.clear();
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(Data._ID + "=?", new String[]{String.valueOf(id)})
.withValue(Email.DATA, "somebody1@android.com")
.build());
try
{
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
日志没有显示任何内容。但电子邮件未更新。有谁知道为什么?
转换为字符串的操作符如下:
[mType: 2, mUri: content://com.android.contacts/data, mSelection: _id=?, mExpectedCount: null, mYieldAllowed: false, mValues: data1=somebody1@android.com, mValuesBackReferences: null, mSelectionArgsBackReferences: null]
答案 0 :(得分:0)
首先,您的try
没有catch
,这可以解释为什么您在日志中看不到任何错误。
其次,从我在文档中看到的内容来看,我认为你最好这样写:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.clear();
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + "=?",
new String[] {String.valueOf(id)})
.withValue(ContactsContract.CommonDataKinds.Email.DATA, "somebody1@android.com")
.build());
try {
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:-1)
尝试使用insideValue not string,但使用字符串数组。
.withValue(ContactsContract.CommonDataKinds.Email.DATA, emails)
,其中
String[] emails = {"Email Name<somebody1@android.com>"};