2010년 7월 13일 화요일

ContextProvider

ContentProvider 주소 구성
    컨텐트 프로바이더의 주소(URI)는 일반적으로 아래와 같은 모습컨텐트 프로바이더의 주소(URI)는 일반적으로 아래와 같은 모습
     content://AUTHORITY/PATH
  
   AUTHORITY 부분
      AUTHORITY는 컨텐트 프로바이더의 고유 주소로, 뒤에 붙에 될 PATH와 함께 다른 어플리케이션에서 해당 컨텐트 프로바이더에 접근하기 위한 주소를 구성합니다.
       AUTHORITY는 다른 어플리케이션과 중복되면 안되므로, 일반적으로 자바 패키지 이름을  짓는 방식을 따라 이름을 지어줍니다. (예 : com.androidhuman.example)
      마지막으로 PATH(경로)는 즉 해당 프로바이더에서 제공하는 구체적인 데이터의 위치를 나타냅니다. 인터넷 주소로 치자면 세부 주소 (예: www.google.com/phone에서 phone 부분)라 할 수 있습니다.
   컨텐트 프로바이더에서 제공하는 자료의 유형 구분
       컨텐트 리졸버와 컨텐트 프로바이더의 주소를 통해 컨텐트 프로바이더에서 제공받는 데이터는 하나의 데이터일 수도 있고, 어떤 유형의 데이터 목록일 수도 있습니다.
       이는 일반적으로 컨텐트 프로바이더의 주소를 통해 구분할 수 있지만, 좀 더 명확하게 해주기 위해 타입(MIME Type)을 지정해줍니다.
       아래와 같은 컨텐트 프로바이더의 주소가 있다고 가정해봅시다. contents://com.androidhuman.phoneprovider/phones 컨텐트 프로바이더의 AUTHORITY는
       com.androidhuman.provider이고, Path는 phones 임을 알 수 있습니다.
       Path는 컨텐트 프로바이더에 따라 여러 구조를 가질 수 있습니다. 아래와 같이 제조사별 휴대폰 목록을 제공하는 컨텐트 프로바이더가 있을 수도 있지요.
       contents://com.androidhuman.phoneprovider/phones/lg
       contents://com.androidhuman.phoneprovider/phones/samsung
       contents://com.androidhuman.phoneprovider/phones/htc
       contents://com.androidhuman.phoneprovider/phones/motorola
      여러 개의 데이터"를 반환하는 컨텐트 프로바이더 주소(URI)는 타입으로 아래와 같은 형식을 갖습니다. vnd.android.cursor.dir/vnd._CUSTOM_NAME_
      위의 휴대폰 정보를 제공하는 컨텐트 프로바이더에서 휴대폰 목록을 제공하는 URI의 타임은 아래와 같이 지정할 수 있겠죠.
         vnd.android.cursor.dir/vnd.androidhuman.phone
      위와 같이 여러 개의 자료가 아닌, 딱 하나의 자료를 가리키는 컨텐트 프로바이더의 주소도 있습니다. 일반적으로 아래와 같은 형태를 하고 있지요.
          contents://com.androidhuman.phoneprovider/phones/lg/1
    
       content://com.androidhuman.phoneprovider/phones/lg/3
         1                    2                                     3    4
       1. 컨텐트 프로바이더에 의해 제공되는 데이터임을 알립니다. 이 부분은 변하지 않습니다.
       2. 컨텐트 프로바이더의 authority부분입니다. 각 컨텐트 프로바이더의 고유 이름입니다.
      3. 컨텐트 프로바이더의 Path 부분이며, 어떤 데이터를 반환할지를 이 부분을 통해 지정합니다.
      4. 3번 부분의 Path 하위의 데이터 중 하나를 가리키는 것으로, 해당 데이터의 ID를 나타냅니다.