Android

Android - Content Providers (콘텐츠 제공자)

TechNote.kr 2016. 1. 6. 23:59
728x90

Content Provider는 한 Process의 Data에 다른 Process에서 연결가능하도록 하는 표준 interface 이다.


[Application A_ContentResolver] <--> [Application B_ContentProvider] <--> [Application B_Data]


외부에서 Application B의 Data에 접근하기 위해서는 기본적으로 Application B에서 Content Provider의 구현이 필요하다. 즉, 외부에 Data 공유가 필요없다면 Content Provider를 제공하지 않아도 된다.


이렇게 외부에서 Data에 접근이 가능하도록 Content Provider가 제공된다면 접근하는 쪽에서는 Content Resolver 가 필요하다. 즉, Content Provider, Content Resolver간의 interface가 뚫리면 Data 접근이 가능하다.


Content Provider에 의해 보여지는 Data 는 Database에서의 tabke과 유사하게 구성되어 있다.

SQL의 CRUD 와 같은 기능을 제공하는데 위에서 언급한 것과 같이 ContentResolver를 통해 ContentProvider로 접근할 수 있다.


getContentResolver().query() : SELECT

getContentResolver().insert() : INSERT

getContentResolver().update() : UPDATE

getContentResolver().delete() : DELETE


[예]

// Queries the user dictionary and returns results

mCursor = getContentResolver().query(

    UserDictionary.Words.CONTENT_URI,   // The content URI of the words table

    mProjection,                        // The columns to return for each row

    mSelectionClause                    // Selection criteria

    mSelectionArgs,                     // Selection criteria

    mSortOrder);                        // The sort order for the returned rows

[developer.android.com]


Database의 select 문과 비교해 보면 다음과 같다.

UserDictionary.Words.CONTENT_URI : Table 이름 (from TableName)

mProjection : 표시할 column

mSelectionClause, mSelectionArgs : 조건절 (where col = value)

msortOrder : 정렬 기준 (order by col)


Content URI 형식


content://AUTHORITY/PATH

AUTHORITY : 제공자의 상징적인 이름(제공자의 권한)

PATH : 테이블을 가리키는 이름(경로)


[예]

content://user_dictionary/words

728x90