2011-01-18 4 views

답변

0

ContactsContact 데이터는 쿼리에서 명시 적 조인을 허용하지 않는 콘텐츠 공급자를 통해서만 가져올 수 있습니다.

당신은 그러나 다음과 같이 데이터 데이터베이스에 대한 단일 쿼리를 사용하여 값을 모두 가질 수 있습니다 당신은 늘 직접 값을 얻을 수있을 경우에

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

예를하지만 모든 연락처의 연락처 ID, 연락처 이름과 조직 이름을 검색합니다. 조직이 비어 있으면 빈 문자열을 반환해야합니다. 위의 쿼리에서 MimeType을 지정하지 않았으므로 원하는 결과가 아닙니다. – random

0

합니다. 당신은 아주 잘 당신이 당신의 데이터를 다시 정렬 할 코드에서 그 논리가 필요하지만 매개 변수

Data.MIMETYPE IN (StructuredName,CONTENT_ITEM_TYPE, Organization.CONTENT_ITEM_TYPE) 

을 추가하여 단일 쿼리를 사용하여 모든 세부 사항을 가져올 수 있습니다. 각 MIMETYPE은 별도의 레코드를 가져옵니다.

마찬가지로 RawContactsEntity를 사용할 수 있습니다. 연락처와 데이터 데이터베이스 간의 조인을 내부적으로 제공합니다.

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))); 
+0

연락처 ID를 어떻게 얻었습니까? – krisDrOid

관련 문제