我们如何使用impicit连接通过ContactsContract API获取displayname和organization.data,以便我可以在一个游标中同时使用这两个值?
答案 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数据库之间的连接。