반응형

안드로이드 앱을 구성하는 네가지 기본 요소는 아래와 같다.

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

 

 

반응형