From 44e209d7b1bf1e38918520bd8e1724ade720e1f8 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 18 Sep 2025 22:02:54 +0900 Subject: [PATCH] =?UTF-8?q?fix(ImagePickerCropper):=20openDocument=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0,=20excludeGif=EA=B0=80=20true=EC=9D=B4?= =?UTF-8?q?=EA=B3=A0=20GIF=20=EC=84=A0=ED=83=9D=EC=8B=9C=20"GIF=EB=8A=94?= =?UTF-8?q?=20=EC=A7=80=EC=9B=90=ED=95=98=EC=A7=80=20=EC=95=8A=EC=8A=B5?= =?UTF-8?q?=EB=8B=88=EB=8B=A4."=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EB=B0=98?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sodalive/common/ImagePickerCropper.kt | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/common/ImagePickerCropper.kt b/app/src/main/java/kr/co/vividnext/sodalive/common/ImagePickerCropper.kt index 8699b604..b1167d73 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/common/ImagePickerCropper.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/common/ImagePickerCropper.kt @@ -56,12 +56,6 @@ class ImagePickerCropper( else handlePickedUri(uri) } - private val openDocument = - caller.registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri -> - if (uri == null) onError(CancellationException("이미지 선택을 취소했습니다.")) - else handlePickedUri(uri) - } - // uCrop 결과 수신 private val cropResult = caller.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> @@ -87,16 +81,12 @@ class ImagePickerCropper( /** 외부에서 호출: 선택 → 크롭 시작 */ fun launch() { - if (excludeGif) { - openDocument.launch(arrayOf("image/png", "image/jpg", "image/jpeg")) + if (ActivityResultContracts.PickVisualMedia.isPhotoPickerAvailable(context)) { + pickPhoto.launch( + PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly) + ) } else { - if (ActivityResultContracts.PickVisualMedia.isPhotoPickerAvailable(context)) { - pickPhoto.launch( - PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly) - ) - } else { - pickContent.launch("image/*") - } + pickContent.launch("image/*") } } @@ -108,14 +98,19 @@ class ImagePickerCropper( private fun handlePickedUri(source: Uri) { if (isGifUri(source)) { - // 1) 캐시에 gif 그대로 복사 - val gifFile = copyUriToCacheAsGif(source) - lastCroppedFile = gifFile - val fileUri = FileProvider.getUriForFile( - context, "${BuildConfig.APPLICATION_ID}.fileprovider", gifFile - ) - // 2) 바로 반환 (크롭 생략) - onSuccess(gifFile, fileUri) + if (excludeGif) { + onError(CancellationException("GIF는 지원하지 않습니다.")) + } else { + // 1) 캐시에 gif 그대로 복사 + val gifFile = copyUriToCacheAsGif(source) + lastCroppedFile = gifFile + val fileUri = FileProvider.getUriForFile( + context, "${BuildConfig.APPLICATION_ID}.fileprovider", gifFile + ) + + // 2) 바로 반환 (크롭 생략) + onSuccess(gifFile, fileUri) + } } else { // 기존 그대로: uCrop 9:20 실행 startCrop(source)