컨텐츠 프로바이더는 외부 앱과 앱 데이터를 공유할 때 사용하는 앱 컴포넌트다.
ContentProvider 클래스 구현하기
모든 컨텐츠 프로바이더는 ContentProvider
의 하위 클래스이다. ContentProvider
는 다른 앱의 데이터 액세스 요청을 처리한다. 데이터 쿼리, 추가, 갱신, 삭제 등의 동작을 수행하는데, 이를 위해서는 다음 나열된 메서드를 구현해야 한다.
query()
컨텐츠 프로바이더의 테이블을 쿼리한다. 쿼리할 테이블, 반환하고자 하는 행 및 열, 정렬 기준 등을 인자로 전달한다. 쿼리 결과는Cursor
객체로 반환된다.insert()
새 행을 추가한다. 행을 추가할 테이블의 URI, 추가할 데이터(ContentValues
객체 사용) 등을 인자로 전달한다. 새로 추가되는 행의 URI를 반환한다.update()
기존 행의 데이터를 갱신한다.insert()
와 유사하게 갱신할 데이터는ContentValues
객체를 사용한다. 갱신된 행의 개수를 반환한다.delete()
행을 삭제한다. 삭제하고자 하는 행이 포함된 테이블의 URI, 행을 삭제하는 조건 등을 인자로 전달한다. 삭제된 행의 개수를 반환한다.onCreate()
시스템이 컨텐츠 프로바이더 객체를 생성할 때 호출하는 수명주기 콜백 메서드
매니페스트 파일에 <provider> 선언하기
컨텐츠 프로바이더는 앱 컴포넌트이므로 앱 매니페스트 파일 안에 <provider>
로 등록해야 한다. 다음 속성을 설정할 수 있다.
android:authorities
컨텐츠 프로바이더가 제공하는 데이터에 대한 URI의 authority 목록. 시스템이 컨텐츠 프로바이더를 식별할 때 사용하는 이름이므로 고유한 문자열이어야 한다. 기본값이 없으므로 적어도 하나 이상은 설정해야 한다.android:name
해당 컨텐츠 프로바이더 클래스.- 컨텐츠 프로바이더에 대한 액세스 권한 관련 속성
android:permission
컨텐츠 프로바이더의 데이터를 읽고 쓰기 위해 필요한 단일 권한. 다른 권한 속성보다 우선순위가 낮다.android:readPermission
컨텐츠 프로바이더를 쿼리할 때 필요한 권한.android:writePermission
컨텐츠 프로바이더의 데이터를 변경할 때 필요한 권한.android:grantUriPermissions
액세스 권한이 없는 앱에 임시로 권한을 부여할지 여부.
- 기타 컨텐츠 프로바이더의 시작 및 제어, 정보 관련 속성
컨텐츠 URI
컨텐츠 프로바이더의 데이터의 URI는 컨텐츠 URI라 한다. 컨텐츠 URI는 다음과 같이 content
스키마, authority
부분, path
부분으로 나뉜다. authority
는 시스템이 컨텐츠 프로바이더를 식별하는 데 사용하는 이름이며, path
는 컨텐츠 프로바이더의 개별 테이블 또는 그의 개별 행을 나타낸다.
content://<authority>/<path>
다른 앱에서 컨텐츠 프로바이더에 액세스하기
다른 앱에서 컨텐츠 프로바이더에 액세스하려면 ContentResolver
를 사용한다. ContentResolver
객체는 Context.getContentResolver()
를 호출하여 얻는다. ContentResolver
는 위에서 설명한 ContentProvider
의 데이터를 다루는 메서드를 포함한다.
'Android' 카테고리의 다른 글
데이터 바인딩 (2) : 이벤트 처리 / Observable (0) | 2022.11.01 |
---|---|
데이터 바인딩 (1) : 기본 사용법 (0) | 2022.10.29 |
JobScheduler로 백그라운드 작업 예약하기 (0) | 2022.09.05 |
서비스 (3) : 시작되는 서비스 (0) | 2022.08.29 |
서비스 (2) : 바인딩된 서비스 (0) | 2022.08.28 |