느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라
article thumbnail

내용제공자(Content Provider)는 한 앱에서 관리하는 데이터를 다른 앱에서도 접근할 수 있도록 해준다. 내용 제공자도 앱 구성요소이기 때문에 시스템에서 관리하며 매니페스트 파일에 등록해야 사용할 수 있다. 내용제공자가 필요한 이유는 앱의 보안때문인데 다른앱이 나의 앱의 데이터를 마음대로 바꾸지 못하게 하는데 의의가 있다.

 

내용제공자에서 공유할 수 있는 파일은 다음과 같다.

  1. 데이터베이스
  2. 파일
  3. 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값이 있을경우 그안에 들어갈 조건값을 대체

 

 

 

 

profile

느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

@주현태

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!