【问题标题】:Contact display name is not get edited in Android联系人显示名称未在 Android 中进行编辑
【发布时间】:2016-10-13 09:57:23
【问题描述】:

我正在尝试编辑特定联系人的显示名称,但无论我做什么,显示名称都没有得到编辑。我查看了所有相关问题,但没有找到任何关于此问题的解决方案。

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
    .withSelection(ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=? AND " +
                   ContactsContract.CommonDataKinds.Phone.MIMETYPE + "='" +
                   ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE + "' AND "+ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID +"=?",
            new String[]{id,raw})
    //.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "B "+name)
    //.withValue(ContactsContract.CommonDataKinds.Phone.PHONETIC_NAME, "B "+name)
    //.withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME_PRIMARY, "B "+name)
    //.withValue(ContactsContract.Data.DISPLAY_NAME, "B "+name)
    .withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "B "+name)
    .build());
try {
    ContentProviderResult[] result =HomeActivity.this.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
    Log.e("Edit Result",result.toString());
} catch (RemoteException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

我已经尝试了所有用 cmets 编写的选项,但使用 ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME。它编辑联系人号码而不是联系人姓名。在过去的 3 天里,我正在尝试这样做,但没有成功。请告诉我我做错了什么或告诉我编辑联系人姓名的正确方法。

【问题讨论】:

    标签: android android-contacts contact


    【解决方案1】:

    名称以 STRUCTURED_NAME mime 类型存储在联系人数据库中。 More information here

    你应该像这样修改你的代码

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
        .withSelection(ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=? AND " +
                       ContactsContract.CommonDataKinds.Phone.MIMETYPE + "='" +
                       ContactsContract.CommonDataKinds.StructuredName + "' AND "+ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID +"=?",
                new String[]{id,raw})
        .withValue(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, "B "+name)
        .build());
    try {
        ContentProviderResult[] result =HomeActivity.this.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
        Log.e("Edit Result",result.toString());
    } catch (RemoteException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
    

    我建议你从模拟器或有根手机中提取联系人数据库以获得更好的理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      相关资源
      最近更新 更多