【问题标题】:Get all contacts and their details (e.g. postal address) in one OUTER JOIN query在一次 OUTER JOIN 查询中获取所有联系人及其详细信息(例如邮政地址)
【发布时间】:2011-05-01 13:12:55
【问题描述】:

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

  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 contacts contactscontract


    【解决方案1】:

    如果您有联系人 ID,并且想要获取邮政地址,请使用:

             Uri postal_uri = ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI;
             Cursor postal_cursor  = getContentResolver().query(postal_uri,null,  ContactsContract.Data.CONTACT_ID + "="+contactId.toString(), null,null);
              while(postal_cursor.moveToNext())
                {
                 String Strt = postal_cursor.getString(postal_cursor.getColumnIndex(StructuredPostal.STREET));
                 String Cty = postal_cursor.getString(postal_cursor.getColumnIndex(StructuredPostal.CITY));
                 String cntry = postal_cursor.getString(postal_cursor.getColumnIndex(StructuredPostal.COUNTRY));
                } 
                postal_cursor.close();                   
    

    【讨论】:

      【解决方案2】:

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

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

      只是遍历数据并检查Data.MIMETYPE 列。例如,如果该列有StructuredPostal.CONTENT_ITEM_TYPE 值,那么您可以从该列中获取StructuredPostal 字段。

      【讨论】:

      • 确实,但需要后期处理。我希望从查询中得到正确的结果光标,这样我就可以将它直接提供给列表视图适配器。但这也可以,谢谢你的想法!
      • 我认为这是旧的并且不再有效?看起来现在电话号码存储在不同的 URI 中。
      猜你喜欢
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多