如何将 "tag" 添加到联系人?

How can I add a "tag" to a contact?

我有一个带有显示本机联系人列表的 listView 的片段。该项目具有一项功能,允许用户向联系人添加 "tag"(列表项有 2 个文本视图,一个带有名称,另一个带有标签,即 "John Smith"、"Dentist").有什么建议我可以添加该标签吗?提前谢谢你。

解决这个问题是我最后所做的(我使用的是注释字段而不是自定义字段)

  try {
     ArrayList<ContentProviderOperation> ops = new ArrayList<>();

     ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
                            .withSelection(ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + "=?"
                                    , new String[]{Long.toString(item.getContactId()), ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE})
                            .withValue(ContactsContract.CommonDataKinds.Note.NOTE, value)
                            .build());

                    ContentProviderResult[] result = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
                    Log.e(TAG, "The result is: " + result);
                } catch (Exception e) {
                    Log.w("UpdateContact", e.getMessage() + "");
                    for (StackTraceElement ste : e.getStackTrace()) {
                        Log.w("UpdateContact", "\t" + ste.toString());
                    }

                    Toast.makeText(context, "Update failed", Toast.LENGTH_SHORT).show();
                }

然后我查询所有我需要的信息

  @Override
public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
    mSelectionArgs[0] = "1";
    return new CursorLoader(
            getActivity(),
            ContactsContract.Contacts.CONTENT_URI,
            PROJECTION,
            SELECTION,
            mSelectionArgs,
            SORT
    );
}

并检索笔记

   String x = "";
    String noteWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
    String[] noteWhereParams = new String[]{id,
            ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE};
    Cursor noteCur = context.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, noteWhere, noteWhereParams, null);
    if (noteCur.moveToFirst()) {
        domain = noteCur.getString(noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE));
    }
    noteCur.close();
    return x;