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> |
'Development > Android' 카테고리의 다른 글
앱에 허용한 권한 해제하기/활성화하기 (0) | 2020.05.14 |
---|---|
서비스에서 메시지 전달하기 (0) | 2020.05.06 |
Back 탐색과 Up 탐색 - API 문서 (0) | 2020.04.13 |
PreferenceActivity, PreferenceActivity 설정 파일, PreferenceActivity의 설정 태그, PreferenceScreen (0) | 2020.04.04 |
AVD(애뮬레이터)에 메시지 보내기 (0) | 2020.03.28 |