안드로이드 앱을 구성하는 네가지 기본 요소는 아래와 같다.
Activity, Service, Broadcase Receiver, Content Provider.
그 중에서 Content Provider는 어플리케이션 사이에서 Data를 공유하는 역할을 담당해준다.
이대 Content Provider가 안드로이드 시스템의 설정값이나 DB에 접근한다면
Content Resolver은 결과를 반환해주는 브릿지 역할을 하게 된다.
이때 데이터 접근을 위해 ContentResolver은 getContentResolver() 메서드를 이용하여 얻을 수 있다.
이때 ContentResolver의 query() 메서드를 이용하여 데이터를 쿼리 할 수 있는데 이때 총 5개의 파라미터가 존재하게 된다.
ContentResolver : query(uri, projection, selection, selectionArgs, sortOrder) uri : content://scheme 방식의 원하는 데이터를 가져오기 위한 정해진 주소 projection : 가져올 컬럼 이름 목록, null이면 모든 컬럼 selection : where 절에 해당하는 내용 selectionArgs : selecton에서 ?로 표시한 곳에 들어갈 데이터 sortOrder : 정렬을 위한 order by 구문 |
예시는 아래와 같다.
// cursor
Cursor cursor = getContentResolver().query(
CONTENT_URI,
PROJECTION,
WHERE_CLAUSE,
null, null);
// 데이터가 있는 경우
if (cursor.moveToFirst()) {
~~
}
String[] what = new String[]{ MediaStore.Images.ImageColumns.DATE_TAKEN,
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.MIME_TYPE,
MediaStore.Images.ImageColumns.DATA };
String where = MediaStore.Images.Media.MIME_TYPE + "='image/jpeg'" +
" OR " + MediaStore.Images.Media.MIME_TYPE + "='image/png’";
Cursor cursor = getContext().getContentResolver()
.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
what,
where,
null,
MediaStore.Images.ImageColumns.DATE_TAKEN + "DESC");
// 이부분은 현재 안드로이드를 직접 이용하지 못해 예시로만 나타내었습니다.
if(cursor.moveToFirst()) {
whlie(cursor.moveToNext()){
Log.v("YOUR_TAG", cursor.getInt(MediaStore.Images.ImageColumns._ID));
}
}
https://developer.android.com/guide/topics/providers/content-provider-basics
https://mainia.tistory.com/4924
'Basic > Android' 카테고리의 다른 글
안드로이드 Log 사용 방법 (0) | 2019.10.31 |
---|---|
MainHandler와 ThreadHandler를 통한 통신 예제 (0) | 2019.10.26 |
Andorid Uri를 Content Uri로 변환하는 방법 (0) | 2019.10.20 |
Android Context 개념 및 이해 (2) | 2019.10.12 |
Bitmap을 Drawable로 혹은 Drawable을 Bitmap으로 변환 (0) | 2019.10.10 |