按联系人姓名将联系人添加到群组

Adding contact to a group by contact name

我正在使用 raw_contact_id 使用此方法

成功将联系人添加到群组
public static Uri addContactToGroup(String rawContactId,String groupId)
{
    try
    {
        ContentValues values = new ContentValues();
        values.put(Data.RAW_CONTACT_ID, rawContactId);
        values.put(GroupMembership.GROUP_ROW_ID, groupId);
        values.put(Data.MIMETYPE, GroupMembership.CONTENT_ITEM_TYPE);

        return getContentResolver().insert(Data.CONTENT_URI, values);
    }
    catch (Exception e)
    {}
    return Uri.EMPTY;
}

但是我想用这个名字添加一个联系人。我尝试了一些更改但没有工作。请帮忙谢谢!

简单,只需查询该名称的所有 RawContact,然后使用您的代码将它们添加到组中:

public void addToGroupByName(String name, long groupId) {
    String[] projection = new String[] { Data.RAW_CONTACT_ID };
    String selection = "(" + Data.MIMETYPE + "=?) AND (" + StructuredName.DISPLAY_NAME + "=?";
    String[] selectionArgs = new String[] { StructuredName.CONTENT_ITEM_TYPE, name };
    Cursor cur = contentResolver.query(Data.CONTENT_URI, projection, selection, null, null);
    while (cur != null && cur.moveToNext()) {
        long rawId = cur.getLong(0);
        addContactToGroup(rawId, groupId);
    }
    if (cur != null) {
        cur.close();
    }
}

备注:

  1. RawContact ID 很长,不是字符串
  2. 群组ID也很长
  3. 由于姓名不是唯一标识符,并且用户可能有多个同名联系人,此代码可能会产生意想不到的后果,因此请确保您知道自己在做什么