【问题标题】:How to get contact name, phone number, email details using Loaders如何使用 Loaders 获取联系人姓名、电话号码、电子邮件详细信息
【发布时间】:2017-11-06 12:22:57
【问题描述】:

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

ContactsContract.CommonDataKinds.Phone.CONTENT_URI

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

ContactsContract.CommonDataKinds.Email.CONTENT_URI

但是,我如何将这两个 uri 传递给 loader 和 retuen Cursor loader,就像在代码中一样。在这段代码中,我只返回姓名和号码,但我怎样才能获得电子邮件才能通过

ContactsContract.CommonDataKinds.Email.CONTENT_URI

给它

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

【问题讨论】:

    标签: android database android-contacts loader


    【解决方案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 添加到您的投影中,并使用它来确定当前行是电话行还是电子邮件行。

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-11
      • 2016-01-02
      相关资源
      最近更新 更多