표시 줄 이름과 organization.data를 묵시적 조인을 사용하여 ContactsContract API를 통해 가져 와서이 값을 단일 커서로 사용할 수있는 방법은 무엇입니까?contact API - 표시 이름 및 조직 제목 가져 오기
1
A
답변
0
ContactsContact 데이터는 쿼리에서 명시 적 조인을 허용하지 않는 콘텐츠 공급자를 통해서만 가져올 수 있습니다.
당신은 그러나 다음과 같이 데이터 데이터베이스에 대한 단일 쿼리를 사용하여 값을 모두 가질 수 있습니다 당신은 늘 직접 값을 얻을 수있을 경우에
Cursor c = getContentResolver().query(Data.CONTENT_URI,new String[] {StructuredName.DISPLAY_NAME,Organization.COMPANY}, Data..CONTACT_ID + " = " + contactId,null,null)
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
예를하지만 모든 연락처의 연락처 ID, 연락처 이름과 조직 이름을 검색합니다. 조직이 비어 있으면 빈 문자열을 반환해야합니다. 위의 쿼리에서 MimeType을 지정하지 않았으므로 원하는 결과가 아닙니다. – random