2012-01-20 5 views

답변

2

ContactsContract.RawContacts.Entity 디렉터리를 사용하여 원시 연락처와 연결된 모든 데이터를 읽어야합니다. 원시 연락처에 데이터 행이있는 경우 엔티티 커서에 각 데이터 행에 대한 행이 포함됩니다. 원시 연락처에 데이터 행이 없으면 커서에는 아직 원시 접촉 레벨 정보가있는 행이 하나씩 포함됩니다.

Uri rawContactUri = 
    ContentUris.withAppendedId(RawContacts.CONTENT_URI, rawContactId); 

Uri entityUri = 
    Uri.withAppendedPath(rawContactUri, Entity.CONTENT_DIRECTORY); 

Cursor c = 
    getContentResolver().query(
    entityUri, 
    new String[] { 
     RawContacts.SOURCE_ID, Entity.DATA_ID, Entity.MIMETYPE, Entity.DATA1 }, 
    null, null, null); 

try { 
    while (c.moveToNext()) { 
     String sourceId = c.getString(0); 
     if (!c.isNull(1)) { 
      String mimeType = c.getString(2); 
      String data = c.getString(3); 
      //decide here based on mimeType, see comment later 
     } 
    } 
} finally { 
    c.close(); 
} 

예를 들어,이 mimeTypePhone.CONTENT_ITEM_TYPE,이면 열 DATA1 저장 전화 번호 만, 데이터 종류 Email.CONTENT_ITEM_TYPE 다음 DATA1 저장 이메일 주소 인 경우.

+0

코드에서 'rawContactId'는 무엇입니까? – Prakash

1

는 일반적인 되려면 미래 지향형, 당신은 콘텐츠 유형과 각 데이터의 열 이름 모두에 대한 상수를 제공하는 경우, CommonDataKinds.Email 위해, 사용할 수 있습니다, 그래서 당신은

String email = c.getString(c.getColumnIndex(Email.ADDRESS)); 
같은 것을 쓸 수

물론 ContentResolver.query()MIMETYPE 및 기타 DataColumns의 상수를 사용하여 관심있는 레코드 만 검색하도록 조건을 제공 할 수 있습니다.