사진이 폴더 리스트와 폴더 안에있는 이미지 갯수를 가져오는 기능을 구현해보려고합니다.
fun requestPicFolderList(context: Context): ArrayList<String> {
val uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(
MediaStore.Images.Media.BUCKET_DISPLAY_NAME
)
val cursor = context.contentResolver.query(uri, projection, null, null, null)
val folderMap: MutableMap<String, String> = TreeMap<String, String>()
if (cursor != null) {
while (cursor.moveToNext()) {
val columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)
val folder = cursor.getString(columnIndex)
try {
if (folderMap[folder] == null) folderMap[folder] = folder
} catch (e: Exception) {
}
}
cursor.close()
}
val folderList = java.util.ArrayList<String>(folderMap.values)
return folderList
}
폴더 리스트를 가져오는 기능입니다.
override fun getFolderListWithCount(): Map<String, Int> {
val uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
val projection = arrayOf(
MediaStore.Images.Media.BUCKET_DISPLAY_NAME
)
val cursor = context.contentResolver.query(uri, projection, null, null, null)
val folderMap: MutableMap<String, Int> = TreeMap<String, Int>()
if (cursor != null) {
while (cursor.moveToNext()) {
val columnIndex = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME)
val folder = cursor.getString(columnIndex)
try {
if(folderMap[folder] == null) folderMap[folder] = 0
folderMap[folder] = folderMap.get(folder)!!.plus(1)
} catch (e: Exception) {
}
}
cursor.close()
}
return folderMap
}
사진 폴더와 카운트를 추가한 기능입니다.
결론
폴더 리스트나 카운트를 추가하는 방법을 좀 더 좋은 방법으로 가져오는 방법이 있을 것 같은데 제 실력으론 아직 부족하네요.. 부족함을 느끼면서 앞으로 쿼리공부를 좀 해야겠다는 생각이 듭니다.
github.com/sarang628/MediaContentResolver
sarang628/MediaContentResolver
Contribute to sarang628/MediaContentResolver development by creating an account on GitHub.
github.com