2

我需要创建一个包含设备上找到的所有电话号码的列表。所以我所做的是查询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 的值吗?我错过了什么吗?

4

1 回答 1

3

访问文档ContactsContract.Data变量 IN_VISIBLE_GROUP

int IN_VISIBLE_GROUP 只读 请参阅 ContactsContract.Contacts。

遵循ContactsContract.Contacts和发现IN_VISIBLE_GROUP解释为:

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

因此,这似乎Data.IN_VISIBLE_GROUP与“人脉”应用可见性状态有关。


另一方面,当您单击它时,您会移到此处提到的位置:

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

其中GROUP_VISIBLE指:

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

类型:整数(布尔值)常量值:“group_visible”

考虑到最后两个引号,它应该可以按您的预期运行!

于 2013-03-20T09:14:13.880 回答