ContactsContract API - 获取显示名称和组织标题

时间:2011-01-18 12:07:41

标签: android api contacts

我们如何使用impicit连接通过ContactsContract API获取displayname和organization.data,以便我可以在一个游标中同时使用这两个值?

3 个答案:

答案 0 :(得分:5)

您可以使用此代码获取组织名称和显示名称:

Cursor organizationNameCursor = cr.query(ContactsContract.Data.CONTENT_URI,new String[] {Organization.TITLE,Organization.DISPLAY_NAME}, ContactsContract.Data.CONTACT_ID + " = " + contactId + " AND ContactsContract.Data.MIMETYPE = '"
                + ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE
                + "'",null,null);

        organizationNameCursor.moveToNext();

        organizationName.setText(organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.TITLE))+" "+organizationNameCursor.getString(organizationNameCursor.getColumnIndex(Organization.DISPLAY_NAME)));

答案 1 :(得分:0)

只能使用不允许我们在查询中显式加入的内容提供程序来获取ContactsContact数据。

但是,您可以在数据库中使用单个查询来获取这两个值,如下所示:

Cursor c = getContentResolver().query(Data.CONTENT_URI,new String[] {StructuredName.DISPLAY_NAME,Organization.COMPANY}, Data..CONTACT_ID + " = " + contactId,null,null)

答案 2 :(得分:0)

在这种情况下,您将无法直接获取值。 通过添加参数

,您可以使用单个查询很好地获取所有详细信息
Data.MIMETYPE IN (StructuredName,CONTENT_ITEM_TYPE, Organization.CONTENT_ITEM_TYPE)  

但是,您需要在代码中使用该逻辑来重新排序数据。 每个MIMETYPE将获取一个单独的记录。

同样,您可以使用RawContactsEntity。它在内部提供Contacts和Data数据库之间的连接。