其他分享
首页 > 其他分享> > android – 在一个OUTER JOIN查询中获取所有联系人及其详细信息(例如邮政地址)

android – 在一个OUTER JOIN查询中获取所有联系人及其详细信息(例如邮政地址)

作者:互联网

我知道如何检索特定联系人的联系人数据.但是,我找不到在单个查询中获取所有联系人以及他们的一些详细信息的方法.以下代码获取所有具有邮政地址的联系人:

  Uri uri = ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI;
  String[] projection = new String[] {
    StructuredPostal._ID,
    StructuredPostal.LOOKUP_KEY,
    StructuredPostal.DISPLAY_NAME,
    StructuredPostal.STREET,
    StructuredPostal.CITY
  };
  String sortOrder = StructuredPostal.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
  Cursor c = getContentResolver().query(uri, projection, null, null, sortOrder);

但我需要的是所有联系人,无论他们是否有邮寄地址.这是可行的使用ContatsContract API,还是我需要创建自定义外连接查询?如何提示?

解决方法:

Android 2.0中的所有联系信息都存储在单个数据库表中.因此,您可以在单个查询中获得所需的所有信息:

Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
    null, null, null, sortOrder);

只需遍历数据并检查Data.MIMETYPE列.例如,如果此列具有StructuredPostal.CONTENT_ITEM_TYPE值,则可以从此列获取StructuredPostal字段.

标签:android,contacts,contactscontract
来源: https://codeday.me/bug/20190730/1578664.html