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

  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 - 在一个OUTER JOIN查询中获取所有联系人及其详细信息(例如邮政地址),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5848573/

10-09 05:51