如何将联系人添加到组

时间:2015-09-01 09:02:31

标签: 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);

}

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

1 个答案:

答案 0 :(得分:1)

使用ContentProviderOperation。

ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();

如果论坛中存在groupId

operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
    ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
    groupId).build());

如果组不存在:

// create group and insert
ContentValues groupValues;
ContentResolver cr = context.getContentResolver();

groupValues = new ContentValues();
groupValues.put(ContactsContract.Groups.TITLE, newGroupId);

try {
    cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
} catch (Exception e) {
    // handle
}

operationList.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
    .withValue(ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
        ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE)
    .withValue(ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID, newGroupId).build());

然后,应用更改:

ContentProviderResult[] cpr = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, operationList);