내용제공자(Content Provider)는 한 앱에서 관리하는 데이터를 다른 앱에서도 접근할 수 있도록 해준다. 내용 제공자도 앱 구성요소이기 때문에 시스템에서 관리하며 매니페스트 파일에 등록해야 사용할 수 있다. 내용제공자가 필요한 이유는 앱의 보안때문인데 다른앱이 나의 앱의 데이터를 마음대로 바꾸지 못하게 하는데 의의가 있다.
내용제공자에서 공유할 수 있는 파일은 다음과 같다.
- 데이터베이스
- 파일
- SharedPreferences
내용제공자에서 허용한 통로로 접근하려면 ContentResolver 객체가 필요하다고 한다. getContentResolver를 통해 사진 데이터에 접근했던 기억이 새록새록 난다.
내 앱의 ContentProvider를 만들려면 ContentProvider 클래스를 상속 후 아래의 메소드들(CRUD)을 오버라이딩 하여야 한다.
그리고 해당 프로바이더를 Manifest에 등록하면 된다.
내용제공자를 만들기 위해서는 고유한 값을 가진 content URI를 만들어야 한다.
content://org.techtown.sample/person/1
content:// -> 내용 제공자에 의해 제어되는 데이터라는 의미 - 마치 http:// 같은 의미
Autority -> org.techtown.sample 부분을 가리키며 특정 내용제공자를 구분하는 고유의 값
Base Path-> person 부분을 가리키며 요청할 자료의 자료형을 결정
ID -> 맨 뒤의 1과 같은 숫자를 가리키며 요청할 데이터 레코드를 지정함.
내용제공자 값의 조회)
public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder)
- uri : URI
- projection : 어떤 칼럼들을 조회할 것인지, null값일 경우 모든 컬럼 조회
- selection : where절에 들어갈 조건 지정,null값일 경우 where 절이 없음
- selectionArgs : selection 값이 있을 경우 그안에 들어갈 조건값을 대체하기 위함.
- sortOrder : 정렬 칼럼의 지정
내용제공자 값의 추가)
public Uri insert(@NonNull Uri uri, @Nullable ContentValues values)
- uri : URI
- values : 저장할 칼럼명과 값이 들어간 ContentValues 객체
내용제공자 값의 수정)
public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs)
uri : URI
values : 저장할 칼럼명과 값들이 들어간 ContentValues객체
selection : where절에 들어갈 조건
selectionArgs : selection값이 있을경우 그안에 들어갈 조건값을 대체
내용제공자 값의 삭제)
public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs)
uri : URI:
selection : where절에 들어갈 조건
selectionArgs : selection값이 있을경우 그안에 들어갈 조건값을 대체
'IT > 안드로이드' 카테고리의 다른 글
구글 테스트 아이디를 이용한 안드로이드 애드몹 적용하기 (0) | 2019.10.11 |
---|---|
안드로이드 에뮬레이터 용량문제(에뮬레이터 초기화) (0) | 2019.10.11 |
안드로이드 권한설정 관련 라이브러리 (0) | 2019.10.11 |
안드로이드 그림판 작성 (2) | 2019.10.10 |
안드로이드의 데이터베이스 SQLite (0) | 2019.10.09 |