5

我想创建一个新的联系人组。我可以查询组并显示所有组名但我无法在 android 中创建组我尝试创建联系人方法但未创建...

ContentResolver cr = this.getContentResolver();
    groupValues = new ContentValues();
    Log.e("Group","start");
    groupValues.put(android.provider.Contacts.GroupMembership.GROUP_ID, 4);
    groupValues.put(android.provider.Contacts.GroupMembership.NAME, "Sriseshaa");
    groupValues.put(android.provider.Contacts.GroupMembership.PERSON_ID, 1);

    cr.insert(android.provider.Contacts.GroupMembership.CONTENT_URI, groupValues);
4

3 回答 3

14

我找到了答案。我通过两种方式找到了答案,但我不知道哪种方法是正确的或最好的使用方法。我在这里分享这些..

其简单的方法,例如添加联系人,

ContentValues groupValues;
create group()
{
 ContentResolver cr = this.getContentResolver();
 groupValues = new ContentValues();
 groupValues.put(ContactsContract.Groups.TITLE, "MyContactGroup");
 cr.insert(ContactsContract.Groups.CONTENT_URI, groupValues);
}

另一种使用 ContentProviderOperation 的方法

 private void createGroup() {
    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

    ops.add(ContentProviderOperation
            .newInsert(ContactsContract.Groups.CONTENT_URI)
            .withValue(ContactsContract.Groups.TITLE, "SRI").build());
    try {

        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

    } catch (Exception e) {
        Log.e("Error", e.toString());
    }

}

谢谢

于 2011-06-02T05:05:18.440 回答
0

为什么要使用groupValues.put(android.provider.Contacts.GroupMembership.GROUP_ID, 4);其 androids 作业指定组 ID 来确定组 ID,您无法指定它,因为您不知道此 ID 是否已被占用。

于 2013-08-05T06:58:55.357 回答
0

adithi 的答案对于 Android 4.2.2 来说已经足够了,其中 Contacts manager 应用程序的名称是 "Contacts" ,但是由该代码创建的组将不会在 Android 4.4,6 上显示,其中 Contacts manager 应用程序的名称是 "People" .

在插入发生时添加帐户类型/名称信息后,该组将显示。

private void createGroup() {

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

        ops.add(ContentProviderOperation
                .newInsert(ContactsContract.Groups.CONTENT_URI)
                .withValue(
                        ContactsContract.Groups.TITLE,
                        Constants.CC_CONTACT_GROUP_TITLE)
                .withValue(
                        ContactsContract.Groups.ACCOUNT_TYPE,
                        Constants.CC_CONTACT_GROUP_ACCOUNT_TYPE)
                .withValue(
                        ContactsContract.Groups.ACCOUNT_NAME,
                        Constants.CC_CONTACT_GROUP_ACCOUNT_NAME)
                .build());
    try {

        getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

    } catch (Exception e) {
        Log.e("Error", e.toString());
    }
}
于 2014-09-25T20:01:31.550 回答