查询联系人的组织,但获取地址类型和值

时间:2014-02-09 01:29:30

标签: android sqlite android-contacts

天儿真好,

我正在使用Cursor + contentResolver查询各个字段以获取Android中的联系信息。对于每个字段,我也定义了一个json对象。在下面的代码片段中,orgObj是一个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是123,NY Way,NY 309210 title is 123,NY Way,NY 309210 02-08 20:25:12.850:V / GetContactsDataNew(2171):org是1249 NY way,NYC 9192 title是1249 NY way,NYC 9192 02-08 20:25:12.850:V / GetContactsDataNew(2171):org是谷歌公司的头衔是工程师

只有最后一个Log.v输出是正确的,我不能在我的生活中找出为什么它附加联系人的地址?我可以理解它附加了工作地址(即使它不应该,不在Organization.COMPANY和Organization.Title字段下),但第二个地址实际上是一个家庭地址:/

我爱我一些帮助:)

1 个答案:

答案 0 :(得分: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());
               }