代码之家  ›  专栏  ›  技术社区  ›  Arahasya

按联系人姓名向组中添加联系人

  •  1
  • Arahasya  · 技术社区  · 6 年前

    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;
    }
    

    但我想用这个名字添加一个联系人。我试着做了些改变,但不起作用。请帮忙谢谢!

    1 回复  |  直到 6 年前
        1
  •  0
  •   marmor    6 年前

    很简单,只需按该名称查询所有联系人,然后使用代码将其添加到组中:

    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. 由于名称不是唯一标识符,并且用户可能有多个同名联系人,因此此代码可能会产生意外的后果,因此请确保您知道自己在做什么