프로그래밍/Android2011. 8. 24. 14:18
콘텐트 프로바이더 기초

 애플리케이션에서 많은 양의 자료를 다룰 때는 주로 데이터베이스를 사용합니다. 그런데 한 애플리케이션 내에 저장되어 있는 데이터베이스는 다른 애플리케이션이 접근할 수 없습니다.

서로 다른 애플리케이션의 데이터베이스에 직접 접근하는 것은 불가능합니다.


 이 문제를 해결하려면, 외부 애플리케이션 내 데이터베이스에 마음대로 접근하는 것은 금지하되 공유하고 싶은 것들에는 접근을 허용할 수단이 필요합니다. 안드로이드에서는 이를 위해 콘텐트 프로바이더(Content Provider)를 사용합니다.
 콘텐트 프로바이더는 한 애플리케이션 내의 데이터베이스를 다른 애플리케이션이 사용할 수 있도록 '통로'를 제공해주며, 외부 애플리케이션이 데이터베이스에 접근할 수 있는 범위를 정해줄 수 있어, 특정 항목만 공유하는 것이 가능합니다.


콘텐트 프로바이더와 콘텐트 리졸버

 콘텐트 프로바이더를 사용하면 시스템 내의 각종 설정 값, SD 카드 내의 미디어파일이나 파일의 정보 등을 접근할 수 있습니다. 콘텐트 프로바이더를 사용하려면 콘텐트 프로바이더의 주소가 필요하며, 일부 콘텐트 프로바이더의 경우 콘텐트 프로바이더를 사용하기 위한 권한도 필요합니다.
 이러한 콘텐트 프로바이더에 접근하기 위해 콘텐트 리졸버(Content Resolver)를 사용하며, 콘텐트 리졸버의 인스턴스는 Context.getContentResolver() 메서드를 사용하여 받을 수 있습니다. 콘텐트 리졸버의 인스턴스를 받아온 후, query insert 등의 메서드를 사용하면 해당 콘텐트 프로바이더에 접근하여 요청한 작업을 수행할 수 있습니다.

콘텐트 리졸버와 콘텐트 프로바이더를 통한 데이터베이스 접근



콘텐트 프로바이더의 주소 구성

 콘텐트 프로바이더의 주소는 URI(Uniform Resource Identifier) 형식으로 구성됩니다. URI는 우리가 인터넷 상의 주소를 표시할 때 쓰는 URI(Uniform Resource Locator)의 상위 개념으로, 자원의 위치를 표기하는 형식입니다.
 콘텐트 프로바이더의 주소는 일반적으로 다음과 같이 구성됩니다.
content://AUTHORITY/PATH
 일반적인 인터넷 주소가 http://로 시작하는 것처럼, 콘텐트 프로바이더는 content://로 시작합니다. URI에서 http, content 부분을 스킴(Scheme)이라 합니다. 즉, 콘텐트 프로바이더의 스킴은 content입니다.
 다음으로, AUTHORITY 부분입니다. AUTHORITY는 콘텐트 프로바이더의 고유주소로, 뒤에 붙게 될 PATH와 함께 콘텐트 프로바이더의 주소를 구성합니다. AUTHORITY는 고유해야 하므로, 가급적 자바 패키지 명명법을 따라 작성합니다.
 마지막으로, PATH(경로)는 프로바이더에서 제공하는 데이터 중 특정 데이터를 가리키기 위해 사용합니다. 테이블 이름이 주로 PATH 부분에 들어갑니다.


콘텐트 프로바이더에서 제공하는 자료의 유형 구분

 콘텐트 프로바이더에서 제공하는 데이터는 하나이거나 여러 개일 수 있습니다. 이를 구분하기 위해 타입(MIME Type)을 사용합니다.
 다음과 같은 콘텐트 프로바이더의 주소를 예로 들어보겠습니다. 이를 휴대전화 정보를 제공하는 콘텐트 프로바이더라 가정합니다.
contents://com.androidhuman.phoneprovider/phones
 이 콘텐트 프로바이더의 AUTHORITY는 com.androidhuman.provider이고, Path는 phones임을 알 수 있습니다. 이와 같은 형태의 주소는 일반적으로 특정 항목에 해당하는 모든 데이터를 가리킵니다.
 '여러 데이터'를 반환하는 콘텐트 프로바이더 주소의 타입은 다음과 같습니다.
vnd.[회사/기관명].cursor.dir/vnd.[타입명]

ex) vnd.androidhuman.cursor.dir/vnd.androidhuman.phone
 ' 하나의 데이터'를 반환하는 주소의 타입은 다음과 같습니다.
vnd.[회사/기관명].cursor.item/vnd.[타입명]

ex) vnd.androidhuman.cursor.item/vnd.anroidhuman.phone


출처 - 기초부터 다지는 커니의 안드로이드

'프로그래밍 > Android' 카테고리의 다른 글

SharedPreferences 예제  (0) 2011.08.24
SharedPreferences 설명  (0) 2011.08.24
SQLite3 - 데이터베이스 어댑터  (0) 2011.08.23
SQLite3 - 데이터베이스  (0) 2011.08.23
알림 메시지  (0) 2011.08.23
Posted by 건깡