안녕하세요~ 챠니입니다! :)
오늘은 Photo Picker 사용방법에 대해서 알아보겠습니다.
PhotoPicker는 Android 앱에서 개발하는 Intent방식이 아닌, READ_EXTERNAL_STORAGE 권한이 없이 Android 13(API 33)이상에서는 바로 사용할 수 있는 기능입니다.
기존 ACTION_PICK인 앱이 전체 저장소 접근권한을 받아 사용해야하는 것과는 달리
Photo Picker를 사용하게되면 앱은 선택된 파일에만 접근이 가능하여 보안측면에서도 장점을 가지고 있습니다.
Photo Picker 사용방법
PhotoPicker를 사용하는 방법은 다음과 같습니다.
먼저 단일, 다중에 케이스를 보겠습니다.
1) 단일 이미지 선택
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.result.PickVisualMediaRequest
val photoPickerLauncher = registerForActivityResult(
ActivityResultContracts.PickVisualMedia()
) { uri ->
uri?.let {
binding.imageView.setImageURI(it)
}
}
fun singlePhotoPicker() {
photoPickerLauncher.launch(
PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)
)
}
2) 다중 이미지 선택
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.result.PickVisualMediaRequest
val multiPicker = registerForActivityResult(
ActivityResultContracts.PickMultipleVisualMedia()
) { uris ->
uris.forEach { uri ->
Log.d("PhotoPicker", "선택된 이미지: $uri")
}
}
fun multiPhotoPicker() {
multiPicker.launch(
PickVisualMediaRequest.Builder()
.setMediaType(ActivityResultContracts.PickVisualMedia.ImageOnly)
.build()
)
}
정리하자면 Android 13 이상에서는 GooglePlayStore에서 ACTION_PICK이 아닌 Photo Picker를 우선적으로 사용하도록 권장하고 있습니다.
그렇기 때문에 따로 권한을 받지 않고있으며, 권한없이 빠르게 이미지를 선택하여 사진의 Uri정보를 얻을 수 있는 장점이 있습니다.
Android 13(API 33)이하에서는 기존방식과 함께 버전별 분기를 처리하면 되겠습니다.

질문 또는 궁굼한 부분은 댓글을 남겨주세요! 친절하게 답변드리겠습니다!
응원의 댓글은 저에게 큰 힘이 된답니다! :)
즐거운 하루되세요!
깃허브 보러 놀러오세요 👇 (맞팔환영)
https://github.com/younminchan
younminchan - Overview
•🇰🇷/👨🏻💻/🖥/⚽️/🎤/🥁/🏃♂️/🚴♂️/🏄🏻♂️/🤟 •TechBlog⬇️ •안드로이드 4년차 개발자 https://minchanyoun.tistory.com - younminchan
github.com
'📱Android > 📱 Android (Kotlin)' 카테고리의 다른 글
| [Android][kotlin] Edge-To-Edge 미적용 (상단바/하단바 색상변경) (1) | 2025.07.17 |
|---|---|
| [Android] 안드로이드스튜디오 업데이트 Execution failed for task ':app:kaptGenerateStubsDebugKotlin'. 해결방법 (0) | 2025.03.26 |
| [Android][kotlin] 상태바 배경 및 아이콘 색상 변경방법 (Android R(30)이상 대응 추가) (0) | 2025.03.04 |
| [Android][kotlin] 마퀴(marquee) - 흐르는 글자, 텍스트뷰 구현하기 (0) | 2025.03.04 |
| [Android][Kotlin] 뒤로가기 OnBackPressedCallback 사용방법 (ex. 뒤로가기 2번클릭 앱 종료 등) (0) | 2025.02.27 |
| [Android] 안드로이드 라이브러리(AAR) 만들기 (0) | 2025.02.04 |
| [Android][kotlin] 앱 하단바 색상 변경방법 (1) | 2024.12.18 |
| [Android] Duplicate class found.. / android.support, AndroidX 대응 (2) | 2024.11.20 |