检索特定联系人的所有详细信息

时间:2018-05-19 13:17:07

标签: android android-contentprovider android-contacts android-cursor

我有Android中特定联系人的ID和查找键。

由此,我需要提取用户保存的所有细节。详细信息包括联系人,电子邮件ID,地址,电话号码,传真,Facebook ID等。

这是文档中给出的

投射回收所有数据:

private static final String PROJECTION =
            {
                Data._ID,
                Data.MIMETYPE,
                Data.DATA1,
                Data.DATA2,
                Data.DATA3,
                Data.DATA4,
                Data.DATA5,
                Data.DATA6,
                Data.DATA7,
                Data.DATA8,
                Data.DATA9,
                Data.DATA10,
                Data.DATA11,
                Data.DATA12,
                Data.DATA13,
                Data.DATA14,
                Data.DATA15
            };

但我怎么知道哪个字段与哪个字段有关?这些DATA {}字段是通用字段,文档有点令人困惑。任何人都可以帮我解析这个投影给出的光标吗?

以下是我所指的documentation

1 个答案:

答案 0 :(得分:0)

您需要先检查Data.MIMETYPE,然后根据mimetype,您可以推断出哪个数据值位于DATA项目中。

例如,如果MIMETYPECommonDataKinds.Phone.CONTENT_ITEM_TYPE,那么您可以检查此表中描述的别名以了解这些值: https://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone#column-aliases

或者,您可以将PROJECTION更改为:

private static final String PROJECTION =
            {
                Data._ID,
                Data.MIMETYPE,
                Phone.NUMBER, 
                Phone.TYPE, 
                Email.ADDRESS,
                Email.TYPE,
                ...
            }

由于这些别名转换为同一组常量(DATA1,DATA2等),性能不会受到影响,代码可能更具可读性。