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