본문 바로가기
📱Android/📱 Android (Kotlin)

[Android][kotlin] Photo Picker 사용방법

by MinChan-Youn 2026. 1. 5.

안녕하세요~ 챠니입니다! :)

오늘은 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://developer.android.com/training/data-storage/shared/photo-picker?hl=ko

 

 

 

 

 

질문 또는 궁굼한 부분은 댓글을 남겨주세요! 친절하게 답변드리겠습니다!

응원의 댓글은 저에게 큰 힘이 된답니다! :)

즐거운 하루되세요!

 

깃허브 보러 놀러오세요 👇 (맞팔환영)

https://github.com/younminchan

 

younminchan - Overview

•🇰🇷/👨🏻‍💻/🖥/⚽️/🎤/🥁/🏃‍♂️/🚴‍♂️/🏄🏻‍♂️/🤟 •TechBlog⬇️ •안드로이드 4년차 개발자 https://minchanyoun.tistory.com - younminchan

github.com

반응형