Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我无法在android中更新电子邮件地址?_Android_Android Contacts_Contactscontract_Android Contentresolver - Fatal编程技术网

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

为什么我无法在android中更新电子邮件地址?,android,android-contacts,contactscontract,android-contentresolver,Android,Android Contacts,Contactscontract,Android Contentresolver,首先,您有一个try,但没有catch,这可能解释了为什么您在日志中没有看到任何错误 其次,从我在文档中看到的情况来看,我认为您最好这样写: [mType: 2, mUri: content://com.android.contacts/data, mSelection: _id=?, mExpectedCount: null, mYieldAllowed: false, mValues: data1=somebody1@android.com, mValuesBackReferences: n

首先,您有一个
try
,但没有
catch
,这可能解释了为什么您在日志中没有看到任何错误

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

[mType: 2, mUri: content://com.android.contacts/data, mSelection: _id=?, mExpectedCount: null, mYieldAllowed: false, mValues: data1=somebody1@android.com, mValuesBackReferences: null, mSelectionArgsBackReferences: null]
ArrayList ops=new ArrayList();
ops.clear();
添加(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT\uURI)
.通过选择(contacts contract.Data.CONTACT_ID+“=?”,
新字符串[]{String.valueOf(id)})
.withValue(contacts contract.commondatatypes.Email.DATA,“somebody1@android.com")
.build());
试一试{
context.getContentResolver().applyBatch(contacts contract.AUTHORITY,ops);
}捕获(例外e){
e、 printStackTrace();
}

尝试在内部使用withValue而不是字符串,而是字符串数组

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

String[]Email={“Email Name”};

您是否尝试过使用Log.d('tag',VALUEasSTRING);检查你的价值观?你指的是哪个价值观?身份证?如果是的话,实际上所有的值都是正确的,但是听起来你已经尝试过了,我也有这个问题。无论我做什么,它似乎都不会更新。我的
ContentProviderOperation
看起来完全一样。id来自哪里?我猜它可能是一个原始联系人ID,这意味着选择将是空的,因此不会执行更新@约拿
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(ContactsContract.CommonDataKinds.Email.DATA, emails)
String[] emails = {"Email Name<somebody1@android.com>"};