컨텐츠 제공자

kosdjs·2025년 6월 30일

Android

목록 보기
14/29
  • 컨텐츠 제공자는 앱이 자체적으로 저장된 데이터나 다른 앱에 저장된 데이터에 액세스하는 것을 돕고 다른 앱에 데이터를 공유하는 방법을 제공함

  • 데이터를 캡슐화 하고 데이터 보안을 정의할 방법을 제공함

  • 한 프로세스의 데이터를 코드가 실행중인 다른 프로세스와 연결하는 표준 인터페이스

  • 아래 그림처럼 다른 앱에서 데이터 접근과 수정을 안전하게 할 수 있도록 컨텐츠 제공자를 설정할 수 있음

  • 데이터 저장소 구현을 변경할 때 데이터 접근에 의존하는 앱이 영향을 받지 않게 추상화를 제공하기 때문에 데이터를 공유할 생각이 없을 때도 컨텐츠 제공자를 사용할 수 있음

  • 아래 그림처럼 SQL 저장소에서 대체 저장소로 변경할 때 컨텐츠 제공자만 영향을 받고 이에 접근하는 앱은 영향을 받지 않음

ContentProvider 클래스에 의존하는 클래스들

  • AbstractThreadedSyncAdapter

  • CursorAdapter

  • CursorLoader

  • 이들 중 하나의 클래스라도 사용한다면 앱에서 컨텐츠 제공자를 구현해야 함

  • 동기화 어댑터 프레임워크를 사용한다면 대안으로 stub 컨텐츠 제공자를 생성할 수 있음

앱에 컨텐츠 제공자가 필요한 경우

  • 앱에 사용자 지정 검색 제안을 구현하려는 경우

  • 앱의 데이터를 위젯에 노출하는 경우

  • 앱의 복잡한 데이터나 파일을 다른 앱에 복사하려는 경우

  • 안드로이드 프레임워크에는 오디오, 비디오, 이미지, 개인 연락처 정보와 같은 데이터를 관리하는 컨텐츠 제공자를 포함함, 이들 중 일부는 android.provider 패키지의 문서에 나열되어 있음, 이 컨텐츠 제공자들은 일부 제한이 있지만 모든 앱에서 접근 가능함

  • 컨텐츠 제공자는 SQLite 관계형 데이터베이스나 이미지 파일과 같은 구조화 되지 않은 데이터와 같이 다양한 데이터 저장소에 대한 접근을 관리할 수 있음

컨텐츠 제공자의 장점

  • 컨텐츠 제공자는 데이터 접근을 위한 권한에 대해 세밀한 제어를 제공함, 예를 들면 컨텐츠 제공자가 있는 앱 외의 다른 앱은 접근을 제한하거나, 다른 앱이 데이터에 접근하기 위한 포괄적 권한을 허용하거나, 데이터를 읽을 때와 쓸 때의 권한을 다르게 설정할 수 있음

  • 컨텐츠 제공자를 사용해 앱의 여러 데이터에 접근하는 자세한 내용을 추상화할 수 있음, 예를 들어 앱에 SQLite 데이터베이스를 이용한 구조화된 기록을 저장하고 오디오와 비디오 파일도 저장한다면 컨텐츠 제공자를 통해 모두 접근이 가능함

원문: https://developer.android.com/guide/topics/providers/content-providers

0개의 댓글