3
    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);
    }

ログには何も表示されません。しかし、メールは更新されません。誰かが理由を知っていますか?

文字列に変換された ops は次のとおりです。

[mType: 2, mUri: content://com.android.contacts/data, mSelection: _id=?, mExpectedCount: null, mYieldAllowed: false, mValues: data1=somebody1@android.com, mValuesBackReferences: null, mSelectionArgsBackReferences: null]
4

2 に答える 2

-1

文字列ではなく、文字列の配列内で withValue を使用してみてください。

.withValue(ContactsContract.CommonDataKinds.Email.DATA, emails)

どこ

String[] emails = {"Email Name<somebody1@android.com>"};
于 2014-02-05T14:26:22.037 に答える