@@ -11,6 +11,8 @@ import android.text.InputFilter
1111import android.view.LayoutInflater
1212import android.view.View
1313import android.view.ViewGroup
14+ import androidx.activity.result.ActivityResultLauncher
15+ import androidx.activity.result.PickVisualMediaRequest
1416import androidx.activity.result.contract.ActivityResultContracts
1517import androidx.compose.ui.unit.dp
1618import androidx.core.content.ContextCompat
@@ -47,12 +49,25 @@ class LeaveReviewFragment : Fragment() {
4749
4850 private val requestPermissionLauncher = registerForActivityResult(ActivityResultContracts .RequestPermission ()) { isGranted ->
4951 if (isGranted) {
50- launchGalleryIntent ()
52+ launchPhotoPicker ()
5153 } else {
5254 showToast(" 사진 업로드를 위해 사진 권한을 허용해 주세요." )
5355 }
5456 }
5557
58+ private val pickMedia: ActivityResultLauncher <PickVisualMediaRequest >? =
59+ if (Build .VERSION .SDK_INT >= 33 ) {
60+ registerForActivityResult(ActivityResultContracts .PickVisualMedia ()) { uri ->
61+ uri?.let {
62+ vm.addImageUri(it, onFailure = {
63+ requireContext().showToast(getString(R .string.leave_review_max_image_toast))
64+ })
65+ }
66+ }
67+ } else {
68+ null
69+ }
70+
5671 override fun onCreateView (
5772 inflater : LayoutInflater ,
5873 container : ViewGroup ? ,
@@ -173,24 +188,32 @@ class LeaveReviewFragment : Fragment() {
173188
174189 binding.addImageButton.setOnClickListener {
175190 requestPermission(onGranted = {
176- launchGalleryIntent ()
191+ launchPhotoPicker ()
177192 })
178193 }
179194 }
180195
181196 private fun requestPermission (onGranted : () -> Unit ) {
182- val permission = if (Build .VERSION .SDK_INT >= 33 ) Manifest .permission.READ_MEDIA_IMAGES else Manifest .permission.READ_EXTERNAL_STORAGE
197+ if (Build .VERSION .SDK_INT >= 33 ) {
198+ onGranted()
199+ return
200+ }
201+ val permission = Manifest .permission.READ_EXTERNAL_STORAGE
183202 if (ContextCompat .checkSelfPermission(requireActivity(), permission) == PackageManager .PERMISSION_GRANTED ) {
184203 onGranted()
185204 } else {
186205 requestPermissionLauncher.launch(permission)
187206 }
188207 }
189208
190- private fun launchGalleryIntent () {
191- val intent = Intent (Intent .ACTION_PICK )
192- .setDataAndType(MediaStore .Images .Media .EXTERNAL_CONTENT_URI , " image/*" )
193- galleryLauncher.launch(intent)
209+ private fun launchPhotoPicker () {
210+ if (Build .VERSION .SDK_INT >= 33 ) {
211+ pickMedia!! .launch(PickVisualMediaRequest (ActivityResultContracts .PickVisualMedia .ImageOnly ))
212+ } else {
213+ val intent = Intent (Intent .ACTION_PICK )
214+ .setDataAndType(MediaStore .Images .Media .EXTERNAL_CONTENT_URI , " image/*" )
215+ galleryLauncher.launch(intent)
216+ }
194217 }
195218
196219 companion object {
0 commit comments