컨텐트 프로바이더 작성

CODEDRAGON Development/Android

반응형

 

 

컨텐트 프로바이더 작성

·         1단계 : 컨텐트 프로바이더 클래스 생성

·         2단계 : Uri 지정

·         3단계 : 속성 정의

·         4단계 : 매니페스트 설정

 

 

---------------------------------------- 

 

 

 

1단계 : 컨텐트 프로바이더 클래스 생성

 

 

ContentProvider 상속받은 클래스를 생성

 

 

 

onCreate() 메소드

초기화 작업을 진행합니다.

 

 

 

query() 메소드

외부 액티비티가 가져가려는 정보에 대한 조건을 입력받아 결과를 뽑아주는 기능을 담당합니다.

public Cursor query(Uri url,

String[] projection,

String selection,

String[] selectionArgs,

String sortOrder) {

 

     return c;

}

 

매개변수

매개변수

설명

uri

'content://' scheme 가지고 가져올 Content Provider 결정합니다.

projection

리턴 받아야 하는 데이터 column 이름목록입니다.

null 지정 모든 column 가져옵니다.

selection

SQLite WHERE 구문의 내용을 결정합니다.

selectionArgs

selection arguments 들을 나열합니다.

sortOrder

SQLite ORDER BY 같은 정렬방식을 결정합니다.

 

 

Contacts 정보를 쿼리하여 가져오는 예제

Cursor c = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

 

 

 

 

insert() 메소드

데이터 집합을 가리키는 Uri 함께 추가할 데이터가 담겨 있는 ContentValues 인스턴스를 넘겨받습니다. 따라서 insert() 내부에서는 입력받은 데이터로 새로운 데이터 항목을 생성하고 값을 채워 넣는 기능을 담당합니다.

마지막으로 생성된 개별 항목에 해당하는 Uri 결과로 리턴합니다.

public Uri insert(Uri url, ContentValues initialValues) {

   return uri;

}

 

 

 

 

update() 메소드

내용을 변경할 데이터 집합이나 개별 항목의 Uri 넘겨받고, 변경할 새로운 값이 들어 있는 ContentValues 인스턴스와 함께 값을 변경할 대상을 선택하는 SQL WHERE 조건과 그에 해당하는 값도 필요합니다.

public int update(Uri url, ContentValues values, String where, String[] whereArgs) {

   return count

}

 

데이터 집합 전체를 대상으로 변경 작업을 진행할 수도 있고 개별 항목을 대상으로 업데이트를 진행할 수도 있습니다.

 

 

 

 

delete() 메소드

update() 메소드와 비슷하게 개별 항목 또는 데이터 집합에 대한 Uri 넘겨받고, WHERE 조건과 WHERE 조건에 들어가는 값을 인자로 받습니다.

public int delete(Uri url, String where, String[] whereArgs) {

   return count;

}

 

 



getType() 메소드

Uri 입력하면 그에 해당하는 MIME 타입을 리턴합니다.

public String getType(Uri url) {

    retrun str;

}

 

 

 

 

 

 

 

 

2단계 : Uri 지정

Uri 중복을 방지하기 위해 패키지명을 사용합니다.

) content://com.codedragon.android.constants.Provider/contants

 

 

 

 

 

 

 

 

3단계 : 속성 정의

public static final class Constants implements BaseColumns {

                     public static final Uri CONTENT_URI

                                           =Uri.parse("content://com.codedragon.android.constants.Provider/constants");

                     public static final String DEFAULT_SORT_ORDER="title";

                     public static final String TITLE="title";

                     public static final String VALUE="value";

           }

 

 

 

 

 

 

 

4단계 : 매니페스트 설정

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="com.codedragon.android.constants"

      android:versionCode="1"

      android:versionName="1.0">

<application android:icon="@drawable/icon" android:label="@string/app_name">

<provider android:name=".Provider"                                      android:authorities="com.codedragon.android.constants.Provider" />       

<activity android:label="@string/app_name" android:name=".ConstantsBrowser">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

 

</application>

<uses-sdk android:minSdkVersion="7" />

 

</manifest>