为什么我无法在安卓中更新电子邮件地址


    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]

首先,您有一个没有catchtry,这可以解释为什么您在日志中看不到任何错误。

其次,从我在文档中看到的内容来看,我认为您最好这样写:

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

尝试在 withValue 中使用 不是字符串,而是字符串数组。

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

哪里

String[] emails = {"Email Name<somebody1@android.com>"};

相关内容

  • 没有找到相关文章

最新更新