我们可以使用此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);
答案 0 :(得分:1)
CommonDataKinds.Phone
和CommonDataKinds.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
,并使用它来确定当前行是电话行还是电子邮件行。