컨텐츠 제공자는 앱이 자체적으로 저장된 데이터나 다른 앱에 저장된 데이터에 액세스하는 것을 돕고 다른 앱에 데이터를 공유하는 방법을 제공함
데이터를 캡슐화 하고 데이터 보안을 정의할 방법을 제공함
한 프로세스의 데이터를 코드가 실행중인 다른 프로세스와 연결하는 표준 인터페이스
아래 그림처럼 다른 앱에서 데이터 접근과 수정을 안전하게 할 수 있도록 컨텐츠 제공자를 설정할 수 있음

데이터 저장소 구현을 변경할 때 데이터 접근에 의존하는 앱이 영향을 받지 않게 추상화를 제공하기 때문에 데이터를 공유할 생각이 없을 때도 컨텐츠 제공자를 사용할 수 있음
아래 그림처럼 SQL 저장소에서 대체 저장소로 변경할 때 컨텐츠 제공자만 영향을 받고 이에 접근하는 앱은 영향을 받지 않음

ContentProvider 클래스에 의존하는 클래스들
AbstractThreadedSyncAdapter
CursorAdapter
CursorLoader
이들 중 하나의 클래스라도 사용한다면 앱에서 컨텐츠 제공자를 구현해야 함
동기화 어댑터 프레임워크를 사용한다면 대안으로 stub 컨텐츠 제공자를 생성할 수 있음
앱에 컨텐츠 제공자가 필요한 경우
앱에 사용자 지정 검색 제안을 구현하려는 경우
앱의 데이터를 위젯에 노출하는 경우
앱의 복잡한 데이터나 파일을 다른 앱에 복사하려는 경우
안드로이드 프레임워크에는 오디오, 비디오, 이미지, 개인 연락처 정보와 같은 데이터를 관리하는 컨텐츠 제공자를 포함함, 이들 중 일부는 android.provider 패키지의 문서에 나열되어 있음, 이 컨텐츠 제공자들은 일부 제한이 있지만 모든 앱에서 접근 가능함
컨텐츠 제공자는 SQLite 관계형 데이터베이스나 이미지 파일과 같은 구조화 되지 않은 데이터와 같이 다양한 데이터 저장소에 대한 접근을 관리할 수 있음
컨텐츠 제공자는 데이터 접근을 위한 권한에 대해 세밀한 제어를 제공함, 예를 들면 컨텐츠 제공자가 있는 앱 외의 다른 앱은 접근을 제한하거나, 다른 앱이 데이터에 접근하기 위한 포괄적 권한을 허용하거나, 데이터를 읽을 때와 쓸 때의 권한을 다르게 설정할 수 있음
컨텐츠 제공자를 사용해 앱의 여러 데이터에 접근하는 자세한 내용을 추상화할 수 있음, 예를 들어 앱에 SQLite 데이터베이스를 이용한 구조화된 기록을 저장하고 오디오와 비디오 파일도 저장한다면 컨텐츠 제공자를 통해 모두 접근이 가능함
원문: https://developer.android.com/guide/topics/providers/content-providers