해당 래퍼런스로 query 메서드 호출
URI, projection, selection, selectionArgs, sortOrder을 요소로 받는다.
URI(Uniform Resource identifer) : 데이터의 위치를 표시하고 데이터를 가져오기 위해 사용
형태 : ":content://authority/path/id"
ex) content://com.android.contacts/contacts
-> content:// : URI를 나타냄
-> authority : key 역할을 함 / 중복 x / 주로 패키지명을 사용
-> path : 가상의 경로
-> id까지 있으면 하나의 데이터만 가져옴, id가 없고 마지막이 path면 복수의 데이터를 가져옴
projection : 필터링, 가져올 값을 나타냄
selection : 필터링 방법, 어떻게 가져올지
selection arguments : 필터링 대상
sort order : 데이터 정렬 순서
-> query에서
select {projection}
from {URI}
where {selection} = {selection arguments}
orderby {sort order}
의 형태로 값을 가져온다.
val uriMatcher = UriMatcher(UriMatcher.NO_ACTION).apply{
addURI(Notes.AUTHORITY, "notes",NOTES)
addURI(Notes.AUTHORITY, "notes/0", NOTE_ID)
}
...
override fun delete(...){
when(uirMatcher.match(uri){
NOTES -> {
//error
}
NOTE_ID -> {
val id = ContentUris.parseId(uri)
...
}
}
}