如何使用装载机获取联系人姓名,电话号码,电子邮件详细信息

时间:2017-11-06 12:22:58

标签: android database android-contacts loader

我们可以使用此uri获取联系人姓名和电话号码

ContactsContract.CommonDataKinds.Phone.CONTENT_URI

我们可以使用uri获取电子邮件地址

ContactsContract.CommonDataKinds.Email.CONTENT_URI

但是,如何将这两个uri传递给加载器并像代码一样重新调整Cursor加载器。在这段代码中,我只返回姓名和号码,但我怎样才能收到电子邮件以获取我如何通过

ContactsContract.CommonDataKinds.Email.CONTENT_URI

到它

return new CursorLoader(this,
                 ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                projection,
                null,
                null,
                null);

1 个答案:

答案 0 :(得分:1)

CommonDataKinds.PhoneCommonDataKinds.Email实际上都是大表ContactsContract.Data的一部分,该表包含许多您可能不感兴趣的其他信息,因此您只能选择那些感兴趣的是您(电话和电子邮件)使用Data.MIMETYPE

因此CursorLoader初始化可以是这样的:

new CursorLoader(this,
    ContactsContract.Data.CONTENT_URI,
    projection,
    ContactsContract.Data.MIMETYPE + " IN (" + CommonDataKinds.Phone.CONTENT_TYPE + ", " + CommonDataKinds.Email.CONTENT_TYPE + ")",
    null,
    null);

但是,请注意,就像您在CommonDataKinds.Phone.CONTENT_URI上查询时一样,每个手机而不是每个联系人,您现在将获得每部手机或电子邮件一行,而不是通过联系汇总。

您应该在投影中添加Data.MIMETYPE,并使用它来确定当前行是电话行还是电子邮件行。