반응형
1ContentResolver란?
ContentProvider가 uri로 접근경로를 열어 제공하는 데이터들을 조회하는 Query입니다.쉽게 생각해서 content uri에 db가 존재하고, 그걸 조회하는 qeury를 작성해 contentResolver로 실행한다고 볼 수 있습니다.
val resolver: ContentResolver = this.contentResolver
val callLogUri = CallLog.Calls.CONTENT_URI
var cursor: Cursor?
try{
cursor = resolver.query(callLogUri, null, null, null, null)
if (cursor != null) {
var maxcount = 2
while (cursor.moveToNext()) {
if (--maxcount < 0) {
break
}
Log.i("Test_Log","cursor count == $maxcount =================================================")
for (i in 0..cursor.columnCount-1) {
val columnName = cursor.getColumnName(i)
val cursorIndex = cursor.getColumnIndex(columnName)
Log.i("Test_Log","cursor - name == $columnName // data = ${cursor.getString(cursorIndex)}")
}
}
}
} catch (e: Exception){
e.printStackTrace()
}
위와같이 사용하면 최근 3건의 통화목록을 로그로 출력하게 됩니다.
ContentResolver.query()의 두번째 매개변수 projection은 null을 입력하게 되면 모든 속성에 대해 출력하게 되니,
해당 Content Provider가 어떤 속성과 값을 가지고 있는지 파악하기 좋습니다.
속성을 파악해두면 좋은 점
- 속성명을 projection에 그대로 입력해 원하는 값을 쉽게 가져올 수 있다.
var projection =
arrayOf(
"cdnip_number",
"number",
"_id"
)
참고 사이트
https://developer.android.com/guide/topics/providers/content-provider-basics
반응형
'IDE & Framework > Android' 카테고리의 다른 글
[Kotlin] WorkManager 사용해보기 (0) | 2021.11.09 |
---|---|
[Kotiln] 실행아이콘이 없는, 런처가 없는 앱 만들기 (0) | 2021.11.02 |
AAC MVVM - (3)AAC ViewModel + ViewBinding (0) | 2021.10.17 |
AAC MVVM - (2)Data binding (0) | 2021.10.17 |
AAC MVVM - (1)Live Data (0) | 2021.10.17 |