查询联系人的组织,但获取地址类型和值
Posted
技术标签:
【中文标题】查询联系人的组织,但获取地址类型和值【英文标题】:Querying a contact's organization, but getting address Type and values 【发布时间】:2014-03-06 10:02:50 【问题描述】:生日,
我正在使用 Cursor + contentResolver 来查询各个字段以获取 android 中的联系信息。对于每个字段,我也定义了一个 json 对象。在 orgObj 下面的 sn-p 中是一个 JSONObject。这是我的示例代码:
String[] filter = contactID;
Cursor genericCursor = cr.query(Data.CONTENT_URI,
null, Data.CONTACT_ID + "=?", filter, null);
while(genericCursor.moveToNext())
String organisation = genericCursor.getString(genericCursor.getColumnIndex(CommonDataKinds.Organization.COMPANY));
String title = genericCursor.getString(genericCursor.getColumnIndex(CommonDataKinds.Organization.TITLE));
if ((organisation != null) && (title != null))
orgObj.put(organisation, title);
Log.v(TAG, "org is " + organisation.toString() + " title is " + title.toString());
顺便说一句,这很好用。但它往往会出于某种原因查询联系人的地址? Log.v 输出如下:
02-08 20:25:12.850: V/GetContactsDataNew(2171): org is 123, NY Way, NY 309210 title is 123, NY Way, NY 309210 02-08 20:25:12.850: V/GetContactsDataNew(2171): org 是 1249 NY 方式,NYC 9192 标题是 1249 NY 方式,NYC 9192 02-08 20:25:12.850: V/GetContactsDataNew(2171): org 是 Google Inc 头衔是 Engineer
只有最后一个 Log.v 输出是正确的,我无法弄清楚为什么它会附加联系人的地址?我可以理解它附加了工作地址(即使它不应该,不在 Organization.COMPANY 和 Organization.Title 字段下),但第二个地址实际上是家庭地址:/
我很想给我一些帮助:)
【问题讨论】:
【参考方案1】:嗯,两个小时后,我终于弄清楚出了什么问题。它是每个联系人属性(或者你有什么)的 mimetype。
基本上,因为我们似乎只能查询 Data.CONTENT_URI,所以我们需要针对特定属性的 MIMETYPE 进行验证。在我的情况下,以下剪辑修复了它:D
while (orgCursor.moveToNext())
String organisation = orgCursor.getString(orgCursor.getColumnIndex(CommonDataKinds.Organization.DATA1));
String title = orgCursor.getString(orgCursor.getColumnIndex(CommonDataKinds.Organization.DATA4));
String MIMETYPE = orgCursor.getString(orgCursor.getColumnIndex(CommonDataKinds.Organization.MIMETYPE));
if ((organisation != null) && (title != null)&&(MIMETYPE.equals("vnd.android.cursor.item/organization")))
orgObj.put(organisation, title);
Log.v(TAG, "org is " + organisation.toString() + " title is " + title.toString());
【讨论】:
以上是关于查询联系人的组织,但获取地址类型和值的主要内容,如果未能解决你的问题,请参考以下文章