如何将联系人添加到组android

vis*_*kar 8 java android contacts

我有以下代码将一个组的联系人添加到android的联系人应用程序/人员应用程序中,它确实添加了该组但不包括该组中的联系人,我缺少什么?我正在成功添加联系人也创建组,我确实得到了两个东西的ID,我使用以下代码将联系人与组关联但它不起作用,组总是空的.

 public Uri addToGroup(long personId, long groupId) {

    ContentValues values = new ContentValues();
    values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
            personId);
    values.put(
            ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
            groupId);
    values
            .put(
                    ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
                    ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);

    return this.getActivity().getContentResolver().insert(
            ContactsContract.Data.CONTENT_URI, values);

}
Run Code Online (Sandbox Code Playgroud)

****更新*****我发现的另一件事是我创建的这个组没有与谷歌同步,这可能就是联系人没有被添加的原因.

vis*_*kar 3

最后可以将联系人添加到组中,这是所需要的,创建一个与谷歌帐户同步的联系人(强制),然后创建一个可以同步到默认同步服务的组,然后按照我在上面代码中添加的方式添加联系人。

如果您想知道如何创建可以同步的组,这里是

public String createGroup(String name) {

    String[] GROUP_PROJECTION = new String[] { ContactsContract.Groups._ID,     ContactsContract.Groups.TITLE };

    try {
        ContentValues groupValues = null;
        ContentResolver cr = this.getContentResolver();
        groupValues = new ContentValues();
        groupValues.put(ContactsContract.Groups.TITLE, name);
        groupValues.put(ContactsContract.Groups.SHOULD_SYNC,true);
        cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);

    }
    catch(Exception e){
        Log.d("########### Exception :",""+e.getMessage());
        return "1";
    }

    String groupID = null;
    Cursor getGroupID_Cursor = null;
    getGroupID_Cursor = this.getContentResolver().query(ContactsContract.Groups.CONTENT_URI,  GROUP_PROJECTION, ContactsContract.Groups.TITLE+ "=?", new String[]{name}, null);

    getGroupID_Cursor.moveToFirst();
    groupID = (getGroupID_Cursor.getString(getGroupID_Cursor.getColumnIndex("_id")));

    return groupID;


}
Run Code Online (Sandbox Code Playgroud)