From ebeb893b50b4aa1ad77bdb203e4f8faed75db43a Mon Sep 17 00:00:00 2001 From: Maciej Srokowski Date: Thu, 9 May 2019 18:37:50 -0700 Subject: [PATCH] Fix Android Camera Roll crash on mime type guessing (#24780) Summary: Fixes this issue: https://github.com/facebook/react-native/issues/24468 It was incorrectly closed by a fix on react-native-community CameraRoll implementation. CameraRoll in react-native still crashes when finding a file with # sign [Android] [Fix] - Fix Android Camera Roll crash on mime type guessing Pull Request resolved: https://github.com/facebook/react-native/pull/24780 Reviewed By: mdvacca Differential Revision: D15281062 Pulled By: lunaleaps fbshipit-source-id: ca3364c8478d9bfc9a0a6657b531ffb384145d8c --- .../react/modules/camera/CameraRollManager.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java index 25b2868cee5..7356b048c19 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/camera/CameraRollManager.java @@ -50,7 +50,6 @@ import java.nio.channels.ReadableByteChannel; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; -import java.net.URLConnection; import java.net.URL; // TODO #6015104: rename to something less iOSish @@ -388,7 +387,8 @@ public class CameraRollManager extends ReactContextBaseJavaModule { WritableMap edge = new WritableNativeMap(); WritableMap node = new WritableNativeMap(); boolean imageInfoSuccess = - putImageInfo(resolver, media, node, idIndex, widthIndex, heightIndex, dataIndex); + putImageInfo(resolver, media, node, idIndex, widthIndex, heightIndex, dataIndex, + mimeTypeIndex); if (imageInfoSuccess) { putBasicNodeInfo(media, node, mimeTypeIndex, groupNameIndex, dateTakenIndex); putLocationInfo(media, node, longitudeIndex, latitudeIndex); @@ -423,20 +423,15 @@ public class CameraRollManager extends ReactContextBaseJavaModule { int idIndex, int widthIndex, int heightIndex, - int dataIndex) { + int dataIndex, + int mimeTypeIndex) { WritableMap image = new WritableNativeMap(); Uri photoUri = Uri.parse("file://" + media.getString(dataIndex)); image.putString("uri", photoUri.toString()); float width = media.getInt(widthIndex); float height = media.getInt(heightIndex); - String mimeType; - try { - mimeType = URLConnection.guessContentTypeFromName(photoUri.toString()); - } catch (StringIndexOutOfBoundsException e) { - FLog.e(ReactConstants.TAG, "Unable to guess content type from " + photoUri.toString(), e); - throw e; - } + String mimeType = media.getString(mimeTypeIndex); if (mimeType != null && mimeType.startsWith("video")) {