본문 바로가기

Programming Practice/Android

[Contacts Provider]연락처 기본 개념

1) 테이블 구조

테이블명 

테이블설명 

 Contact

 사람별로 Contact table 의 row가 만들어진다.

 Raw Contact

 Summary 

 Data

 Detail


2) 세부 설명

 a. Raw Contact

   ㄱ. 목적 

        - sync 된 web service의 출처를 구분하기 위함 

        - 여러 web service(gmail, naver, daum 등등) 의 연락처와 휴대폰의 연락처를 동기화할 수 있는데, 이때 출처에 따라 구별할기 위해 Raw Contact를 구성. 안드로이드는 특정인에 대한 여러 Raw Contact 를 조합해서 사용자에게 연락처를 보여준다.


   ㄴ. 컬럼 구성

         - ACCOUNT_NAME - 계정명

         - ACCOUNT_TYPE - web service 종류

           ex) 예를 들어 특정인이 abc@gmail.com, xyz@gmail.com 계정의 연락처와 휴대폰의 연락처를 동기화했다고 하면, 2개의 Raw Contact row가 생기며, 각각은 ACCOUNT_NAME(abc), ACCOUNT_TYPE (google) / ACCOUNT_NAME(xyz), ACCOUNT_TYPE (google) 이렇게 구성된다.


 b.  Data

   ㄱ. 목적 

        - 실제 연락처 정보( name, phone number, address, email address, group 등등)들이 들어간다.

       - 연락처 정보별로 다른 성격의 table을 만들지 않고, 모두 같은 Data table을 사용한다. 아래와 같은 컬럼 구성으로 그것이 가능하다.


   ㄴ. 컬럼 구성

        * Descriptive Columns

           (연락처 정보 유형(ex. name, phone number)별로 컬럼의 의미가 모두 같음)

        - RAW_CONTACT_ID

        - MIMETYPE 

           : 연락처 정보 유형, ContactsContract.CommonDataKinds 의 constants로 설정

        - IS_PRIMARY 

           : 여러 같은 정보 유형 중 default 로 설정되는 정보 

        * Generic Columns 

          (연락처 정보 유형별로 컬럼의 의미가 모두 다름)

        - DATA1 ~ DATA15


참고)

1. Content Provider Basics