위치(Uri) 및 타입(type)와 함께 공유 자료에 대한 추가, 삭제, 갱신 및 자료에 대한 결과 집합 등을 ContentProvider를 상속받아 재정의 함으로써 제공
Custom ContentProvider은 SQLite3(Room)와 매핑을 이룸

런타임 환경에서 데이터를 관리하고 다른 앱에 데이터를 전달하는 역할.
CP는 REST 방식과 비슷
ContentResolver , Jetpack AndroidX CursorLoader(비동기처리) 를 이용하여 클라이언트에서 호출
내용제공자는 데이터를 제공하는 저장소를 한곳으로 통일시키고 클라이언트들이 쉽게 접근 할 수 있도록 만들어 주는 데이터 레이어
ex) 다섯개의 추상 메소드를 재정의
class CustomContentProvider : ContentProvider(){
fun delete(Uri, String, String []) : Int{
return 0 ;
}
fun getType(Uri) : String{
return “”;
}
fun insert(Uri, ContentValues) : Uri{
return null;
}
fun onCreate() : Boolean{
return false;
}
fun query(Uri , String [], String, String [], String) : Cursor{
return null;
}
fun update(Uri, ContentValues, String, String []) : Int{
return 0;
}
}
onCreate()
CUD(insert, update, delete) Methods
getType()
인터넷에서 위치를 나타내는 URL보다는 상위의 개념
Uri를 이용하여 내용제공자의 추상화된 이름을 다른 앱에 제공
내용 제공자 애플리케이션은 다른 앱이 접근하는데 사용할 기준이 되는 URI를 중복 없이 정의
Path : Uri 선언은 하나 또는 복수개의 ITEM을 선언하는 형태로 정의함
단수 형태 : 보통 Authority 다음에 ID값이 설정 됨
// 12는 보통 ID값을 나타냄
content://com.te.st.er.crmdb/person/12
//개인고객 전체를 나타냄
content://com.te.st.er.crmdb/person
content://com.te.ster.crmdb/person/# : 특정 수치
content://com.te.ster.crmdb/ebiz/person/# : 개발자가 정하기 나름
content://com.te.ster.crmdb/ebiz/* : 모든 형식