contactData = mCtx.getContentResolver().query(Data.CONTENT_URI,
new String[] {
Data._ID, Data.MIMETYPE, Data.RAW_CONTACT_ID,
Data.IS_PRIMARY, Data.IS_SUPER_PRIMARY, Data.DATA_VERSION,
Data.DATA1, Data.DATA2, Data.DATA3, Data.DATA4, Data.DATA5
},
Data.CONTACT_ID + "=?",
new String[] {String.valueOf(ContactID)}, null);
이렇게쿼리를이용해서 주소록데이타를 가져올때
어떻게 항목별로 구별해서 뷰어를통해서 보여줘야될까요?
실제로 이렇게해서 디스플레이해보니까
전화번호의경우
집전화번호 스마트폰번호 를 기록해넣었는데
Data.MIMETYPE 은같은데
Data._ID 값이 틀리게해서 하나는 집전화 또하나는 스마트폰
이런식으로 기록되어있습니다
그러니까
Data.MIMETYPE 만가지고는 집전화와 스마트폰 을구별할수없을것같은데
보통은 어떤식으로 하시는지...
그리고 Data.DATA1 에 전화번호가 들어가고
Data.DATA4 에는 모르는 번호가 기록되어있는데
이건 어떤데이타인지 모르겠습니다
데이타 1 2 3 4 가 어떻게다르게 저장되는지도 궁금합니다
주소록 데이터 구조는 좀 복잡합니다.
실제 값은 Data 라는 테이블에 저장되고 이것들 모음이 RowContact 이란 녀석이죠,
근데 RowContact 이란 녀석은 뭐 여러게 합쳐서 하나로 만들수 있기 때문에 Contact 이라는 RowContact 묶음이 존재 합니다.
Data 필드를 굳이 쓸필요 없이 Phone 이란 걸 쓰면, 전화 번호 내용을 알 수 있는데.
Data.DATA1번은 기억하길 전화 번호 이고 DATA2 번은 Type 이었던가? 그리고 DATA3번은 Label 이고,
뭐 이런 내용이 있습니다. 결론 적으로 스마트폰이냐 집전화냐 구분 하려면 Phone.Type과 Phone.Label을 가지고 구분 해야합니다.
http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html
구글 개발자 사이트에 나와 있는 정보 입니다.