diff --git a/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java b/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java index 3b70da187..135750c84 100644 --- a/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java +++ b/android/src/main/java/com/reactnative/ivpusic/imagepicker/PickerModule.java @@ -370,6 +370,34 @@ private void initiateCamera(Activity activity) { } private void initiatePicker(final Activity activity) { + try { + if (multiple) { + initiateModernPicker(activity); + } else { + initiateClassicPicker(activity); + } + } catch (Exception e) { + resultCollector.notifyProblem(E_FAILED_TO_SHOW_PICKER, e); + } + } + + private void initiateModernPicker(final Activity activity) { + try { + String photoPickerAction = "android.provider.action.PICK_IMAGES"; + + Intent intent = new Intent(photoPickerAction); + + if (maxFiles != Integer.MAX_VALUE) { + intent.putExtra("android.provider.extra.PICK_IMAGES_MAX", maxFiles); + } + + activity.startActivityForResult(intent, IMAGE_PICKER_REQUEST); + } catch (Exception e) { + initiateClassicPicker(activity); + } + } + + private void initiateClassicPicker(final Activity activity) { try { PickVisualMediaRequest.Builder builder = new PickVisualMediaRequest.Builder(); // Simplified media type handling