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

Posted

技术标签:

【中文标题】想以编程方式在联系人中创建一个新组【英文标题】:Want to create a new group in contacts programmatically 【发布时间】:2011-09-02 07:58:01 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

添加联系人的简单方法,

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.Friends 2. family 3. CoWorkes 中已经存在 3 个选项。现在我的问题是如何在这些选项中将联系人添加到特定组。【参考方案2】:

你为什么用groupValues.put(android.provider.Contacts.GroupMembership.GROUP_ID, 4);指定组ID,它的androids工作来确定组ID,你不能指定它,因为你不知道这个id是否已经被占用了。

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于想以编程方式在联系人中创建一个新组的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式编辑 iOS 联系人 [关闭]

如何从android中的联系人中搜索号码?

Dictionary 嵌套Dictionary

从联系人中选择自动填充地址后,iOS UITextField 文本字段为空

Kotlin 协程Flow 流组合 ( Flow#zip 组合多个流 | 新组合流的元素收集间隔与被组合流元素发射间隔的联系 )

Kotlin 协程Flow 流组合 ( Flow#zip 组合多个流 | 新组合流的元素收集间隔与被组合流元素发射间隔的联系 )