ContactsContract - 我应该显示哪些联系人? (可见组)

时间:2013-03-15 20:30:45

标签: android visible contactscontract

我需要创建一个列表,其中包含设备上找到的所有电话号码。所以我做的是查询ContactsContract.Data.CONTENT_URI如下:

            Uri uri = Data.CONTENT_URI;
    String[] PROJECTION = new String[] { Data.IN_VISIBLE_GROUP,// 0
            Data.DISPLAY_NAME, // 1
            Phone.NUMBER, // 2
            Phone.TYPE, // 3
            Phone.LABEL, // 4
    };
    String SELECTION = Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE
            + "' AND " + Data.IN_VISIBLE_GROUP + " = 1";
    String[] SELECTARGS = null;
    String SORTORDER = null;
    Cursor c = getContentResolver().query(uri, PROJECTION, SELECTION,
            SELECTARGS, SORTORDER);

当我在Nexus 4上运行代码时,无论我在人物应用程序(默认的联系人管理器)中设置的显示选项,光标始终都填充相同的联系人。不应该根据该设置更改Data.IN_VISIBLE_GROUP的值吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:3)

访问文档ContactsContract.Data变量IN_VISIBLE_GROUP

  

int IN_VISIBLE_GROUP只读请参阅ContactsContract.Contacts。

关注ContactsContract.Contacts并找到IN_VISIBLE_GROUP解释为:

  

该联系人是否应该在该联系人中可见的指示符   UI。如果联系人至少有一个属于a的原始联系人,则为“1”   可见组;否则为“0”。

因此Data.IN_VISIBLE_GROUP似乎与人物应用可见性状态有关。


另一方面,当您点击它时,您移动了here提到的地方:

  

反映任何GROUP_VISIBLE状态的标志   ContactsContract.CommonDataKinds.GroupMembership此联系人。   常数值:“in_visible_group”

GROUP_VISIBLE指的是:

  

指示属于该组的联系人是否应该是的标志   在任何用户界面中都可见。

     

类型:INTEGER(boolean)常量值:“group_visible”

考虑到最后2个引号它应该按预期运行!