联系人组GROUP_VISIBLE和GROUP_IS_READ_ONLY被忽略了吗?

时间:2019-01-19 09:44:18

标签: java android android-contacts contactscontract

有人可以向我解释为什么在创建我的组时会忽略此参数GROUP_IS_READ_ONLY(设置为0)和GROUP_VISIBLE(设置为false)吗?

我仍然可以在其中看到群组和联系人,也可以在其中删除/修改我的群组和联系人。

编辑

这是我创建群组的方式:

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

ops.add(ContentProviderOperation.newInsert(Groups.CONTENT_URI)
                    .withValue(Groups.TITLE, groupName)
                    .withValue(Groups.ACCOUNT_NAME, accountName)
                    .withValue(Groups.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE)
                    .withValue(Groups.GROUP_VISIBLE, false)
                    .withValue(Groups.GROUP_IS_READ_ONLY, 1)
                    .build());

mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops);

这就是Android开发人员官方页面所说的:

  

GROUP_VISIBLE -标记,指示是否应在任何用户界面中看到属于该组的联系人。

     

GROUP_IS_READ_ONLY -“只读”标志:默认情况下为“ 0”,如果该行只能通过同步适配器进行修改或删除,则为“ 1”。请参阅ContactsContract.CALLER_IS_SYNCADAPTER。

谢谢!

1 个答案:

答案 0 :(得分:1)

因此,从注释部分继续,答案是您的输入值还可以,并且可以按要求保存。

但是,“联系人”应用程序(或任何其他读取联系人的应用程序)可以忽略GROUP_VISIBLE上的值,并在电话上显示所有联系人。 通常,应用程序会为用户提供一些过滤功能,因此用户可以选择只查看可见组中的联系人,手机上的所有联系人还是特定组。

如果使用IN_VISIBLE_GROUP选择来查询联系人,那么您不应在光标响应中获得在您的组下创建的联系人。