如何在联系人中添加“标签”?

时间:2015-05-07 14:59:05

标签: android mobile contacts

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

1 个答案:

答案 0 :(得分:0)

我是否已经完成了这项工作(我使用的是Notes字段而不是自定义字段)

  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;