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

Posted

技术标签:

【中文标题】为啥我无法在 android 中更新电子邮件地址?【英文标题】:Why am I unable to update the email address in android?为什么我无法在 android 中更新电子邮件地址? 【发布时间】:2012-12-03 01:09:01 【问题描述】:
    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]

【问题讨论】:

您是否尝试过使用 Log.d('tag',VALUEasSTRING);检查你的价值观? 你指的是哪个值?身份证?如果是的话 实际上所有的值,但听起来你已经尝试过了 我也遇到了这个问题。不管我做什么,它似乎都没有更新。我的ContentProviderOperation 看起来一模一样。 id 来自哪里?我的猜测是它可能是其他东西,例如原始联系人 ID,这意味着选择将为空,因此不会执行更新。 @乔纳 【参考方案1】:

首先,您有一个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();

【讨论】:

【参考方案2】:

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

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

在哪里

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

【讨论】:

以上是关于为啥我无法在 android 中更新电子邮件地址?的主要内容,如果未能解决你的问题,请参考以下文章

邮件为啥发不出去?

为啥使用 quickblox sdk 从网站到 Android 在挂断电话上无法访问更新的会话信息?

为啥 Android Studio 在上次更新后显示“代码中无处不在”的错误?

android studio中 Build Tools 已经存在22.0.1并且版本也已经改为22.0.1为啥还报错 Error

android 6.0为啥接收不到短信广播

如何在 Facebook Android sdk 4.0 中使用 Graph Request 获取登录用户的电子邮件地址