想要以编程方式在联系人中创建新组

时间:2011-05-26 06:20:47

标签: android android-contacts

我想创建一个新的联系人组。我可以查询该组并显示所有组名但我无法在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);

3 个答案:

答案 0 :(得分:13)

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

添加联系人的简单方法,

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

}

由于

答案 1 :(得分:0)

为什么要使用groupValues.put(android.provider.Contacts.GroupMembership.GROUP_ID, 4);指定组ID来确定组ID,你不能指定它,因为你不知道这个id是否已被采用。

答案 2 :(得分:0)

对于Android 4.2.2,adithi的回答已经足够了,其中联系人管理器应用程序的名称是“联系人”,但该代码创建的组不会显示在Android 4.4,6上,其中联系人管理器应用程序的名称是“人”。

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

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