2013-11-27 107 views
2

我试图获取联系人的公司名称,但我找到的所有示例都基于联系人数据结构,而不是ContactsContract之一。如何处理公司名称?

我发现这应该与此代码工作的例子:

   // Get Organizations......... 

       String orgWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
       String[] orgWhereParams = new String[]{id, 
        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE}; 
       Cursor orgCur = cr.query(ContactsContract.Data.CONTENT_URI, 
          null, orgWhere, orgWhereParams, null); 
       if (orgCur.moveToFirst()) { 
        String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA)); 
        String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE)); 
       } 
       orgCur.close(); 

不幸的是,当我执行这个代码,ORGNAME包含电话号码,而不是公司名称。

有没有人熟悉处理这个“奇怪”的组织信息?

问候,

+0

公司名称是在ContactsContract.CommonDataKinds.Organization.COMPANY列。 – njzk2

+0

不幸的是,我已经尝试过这个领域,并且找不到任何东西。 – AlainBo

+0

好的,我修复了它的代码感谢: – AlainBo

回答

2

好吧,我发现它归功于 “http://www.cnblogs.com/lycoris/archive/2011/05/13/2037716.html” 代码。这不是一个关于接入领域的问题:

初始化光标正确的方法是:

Cursor cCur = cr.query(ContactsContract.Data.CONTENT_URI, 
       null, 
       ContactsContract.Data.CONTACT_ID 
       + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?", 
       new String[] { id, 
       ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE }, 
            null);