From 9424cd7e8f0a23f8289fdaf198c48ef5f3523f40 Mon Sep 17 00:00:00 2001 From: Nivetha Singara Vadivelu Date: Mon, 9 Oct 2017 22:34:40 -0700 Subject: [PATCH] Handling exceptions in video player Reviewed By: furdei Differential Revision: D5958119 fbshipit-source-id: 79b431a8422d60134890d44e99c358a07a5adc5b --- .../modules/camera/CameraRollManager.java | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 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 6fc28ec86..c10c46dde 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 @@ -420,21 +420,31 @@ public class CameraRollManager extends ReactContextBaseJavaModule { MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setDataSource(photoDescriptor.getFileDescriptor()); - if (width <= 0 || height <= 0) { - width = + try { + if (width <= 0 || height <= 0) { + width = + Integer.parseInt( + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); + height = + Integer.parseInt( + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); + } + int timeInMillisec = Integer.parseInt( - retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH)); - height = - Integer.parseInt( - retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)); + retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)); + int playableDuration = timeInMillisec / 1000; + image.putInt("playableDuration", playableDuration); + } catch (NumberFormatException e) { + FLog.e( + ReactConstants.TAG, + "Number format exception occurred while trying to fetch video metadata for " + + photoUri.toString(), + e); + return false; + } finally { + retriever.release(); + photoDescriptor.close(); } - int timeInMillisec = - Integer.parseInt( - retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)); - int playableDuration = timeInMillisec / 1000; - image.putInt("playableDuration", playableDuration); - retriever.release(); - photoDescriptor.close(); } catch (IOException e) { FLog.e(ReactConstants.TAG, "Could not get video metadata for " + photoUri.toString(), e); return false;