diff --git a/android/src/main/java/com/imagepicker/ImagePickerModule.java b/android/src/main/java/com/imagepicker/ImagePickerModule.java index 0f037be37..d7653e82e 100644 --- a/android/src/main/java/com/imagepicker/ImagePickerModule.java +++ b/android/src/main/java/com/imagepicker/ImagePickerModule.java @@ -188,7 +188,9 @@ public void onActivityResult(Activity activity, int requestCode, int resultCode, switch (requestCode) { case REQUEST_LAUNCH_IMAGE_CAPTURE: if (options.saveToPhotos) { - saveToPublicDirectory(cameraCaptureURI, reactContext, "photo"); + Uri publicFileUri = saveToPublicDirectory(cameraCaptureURI, reactContext, "photo"); + onAssetsObtained(Collections.singletonList(publicFileUri)); + break; } onAssetsObtained(Collections.singletonList(fileUri)); @@ -200,7 +202,9 @@ public void onActivityResult(Activity activity, int requestCode, int resultCode, case REQUEST_LAUNCH_VIDEO_CAPTURE: if (options.saveToPhotos) { - saveToPublicDirectory(cameraCaptureURI, reactContext, "video"); + Uri publicFileUri = saveToPublicDirectory(cameraCaptureURI, reactContext, "video"); + onAssetsObtained(Collections.singletonList(publicFileUri)); + break; } onAssetsObtained(Collections.singletonList(fileUri)); diff --git a/android/src/main/java/com/imagepicker/Utils.java b/android/src/main/java/com/imagepicker/Utils.java index 304f3c6e4..38abd35ed 100644 --- a/android/src/main/java/com/imagepicker/Utils.java +++ b/android/src/main/java/com/imagepicker/Utils.java @@ -78,7 +78,7 @@ public static Uri createUri(File file, Context reactContext) { return FileProvider.getUriForFile(reactContext, authority, file); } - public static void saveToPublicDirectory(Uri uri, Context context, String mediaType) { + public static Uri saveToPublicDirectory(Uri uri, Context context, String mediaType) { ContentResolver resolver = context.getContentResolver(); Uri mediaStoreUri; ContentValues fileDetails = new ContentValues(); @@ -94,6 +94,7 @@ public static void saveToPublicDirectory(Uri uri, Context context, String mediaT } copyUri(uri, mediaStoreUri, resolver); + return mediaStoreUri; } public static void copyUri(Uri fromUri, Uri toUri, ContentResolver resolver) { @@ -387,11 +388,15 @@ static ReadableMap getImageResponseMap(Uri uri, Options options, Context context String fileName = uri.getLastPathSegment(); int[] dimensions = getImageDimensions(uri, context); + ContentResolver resolver = context.getContentResolver(); + String fileType = resolver.getType(uri); + + WritableMap map = Arguments.createMap(); map.putString("uri", uri.toString()); map.putDouble("fileSize", getFileSize(uri, context)); map.putString("fileName", fileName); - map.putString("type", getMimeTypeFromFileUri(uri)); + map.putString("type", getFileTypeFromMime(fileType)); map.putInt("width", dimensions[0]); map.putInt("height", dimensions[1]); @@ -418,7 +423,7 @@ static ReadableMap getResponseMap(List fileUris, Options options, Context c Uri uri = fileUris.get(i); if (isImageType(uri, context)) { - if (uri.getScheme().contains("content")) { + if (uri.getScheme().contains("content") && !options.saveToPhotos) { uri = getAppSpecificStorageUri(uri, context); } uri = resizeImage(uri, context, options);