diff --git a/WordPress/src/main/java/org/wordpress/android/ui/ShareIntentReceiverActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/ShareIntentReceiverActivity.java index bbdd6ed3f221..28edf0b25bab 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/ShareIntentReceiverActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/ShareIntentReceiverActivity.java @@ -4,6 +4,7 @@ import android.content.SharedPreferences; import android.net.Uri; import android.os.Bundle; +import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -21,6 +22,8 @@ import org.wordpress.android.ui.main.WPMainActivity; import org.wordpress.android.ui.media.MediaBrowserActivity; import org.wordpress.android.ui.media.MediaBrowserType; +import org.wordpress.android.util.AppLog; +import org.wordpress.android.util.AppLog.T; import org.wordpress.android.util.FluxCUtils; import org.wordpress.android.util.MediaUtils; import org.wordpress.android.util.ToastUtils; @@ -94,23 +97,33 @@ private void refreshContent() { } private void downloadExternalMedia() { - if (Intent.ACTION_SEND_MULTIPLE.equals(getIntent().getAction())) { - ArrayList externalUris = getIntent().getParcelableArrayListExtra((Intent.EXTRA_STREAM)); - for (Uri uri : externalUris) { - if (uri != null && isAllowedMediaType(uri)) { - mLocalMediaUris.add(MediaUtils.downloadExternalMedia(this, uri)); + try { + if (Intent.ACTION_SEND_MULTIPLE.equals(getIntent().getAction())) { + ArrayList externalUris = getIntent().getParcelableArrayListExtra((Intent.EXTRA_STREAM)); + for (Uri uri : externalUris) { + if (uri != null && isAllowedMediaType(uri)) { + mLocalMediaUris.add(MediaUtils.downloadExternalMedia(this, uri)); + } + } + } else if (Intent.ACTION_SEND.equals(getIntent().getAction())) { + Uri externalUri = getIntent().getParcelableExtra(Intent.EXTRA_STREAM); + if (externalUri != null && isAllowedMediaType(externalUri)) { + mLocalMediaUris.add(MediaUtils.downloadExternalMedia(this, externalUri)); } } - } else if (Intent.ACTION_SEND.equals(getIntent().getAction())) { - Uri externalUri = getIntent().getParcelableExtra(Intent.EXTRA_STREAM); - if (externalUri != null && isAllowedMediaType(externalUri)) { - mLocalMediaUris.add(MediaUtils.downloadExternalMedia(this, externalUri)); - } + } catch (Exception e) { + ToastUtils.showToast(this, + R.string.error_media_could_not_share_media_from_device, ToastUtils.Duration.LONG); + AppLog.e(T.MEDIA, "ShareIntentReceiver failed to download media ", e); } } private boolean isAllowedMediaType(@NonNull Uri uri) { String filePath = MediaUtils.getRealPathFromURI(this, uri); + // For cases when getRealPathFromURI returns an empty string + if (TextUtils.isEmpty(filePath)) { + filePath = String.valueOf(uri); + } return MediaUtils.isValidImage(filePath) || MediaUtils.isVideo(filePath); } diff --git a/WordPress/src/main/res/values/strings.xml b/WordPress/src/main/res/values/strings.xml index d28bdcc5957d..9b1825e36e98 100644 --- a/WordPress/src/main/res/values/strings.xml +++ b/WordPress/src/main/res/values/strings.xml @@ -2006,6 +2006,8 @@ This file type is not allowed Unexpected empty file path for Media Could not find media file in path + Unable to load the media for sharing. Please check the app\'s permissions + or use the app\'s media library. The specified path is a directory instead of a Media file Media upload failed.\n%1$s Your action is not allowed diff --git a/build.gradle b/build.gradle index 68f0424a0e10..f443a2c67a89 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ ext { wordPressFluxCVersion = '2.64.0' wordPressLoginVersion = '1.12.0' wordPressPersistentEditTextVersion = '1.0.2' - wordPressUtilsVersion = '3.12.0' + wordPressUtilsVersion = '3.13.0' indexosMediaForMobileVersion = '43a9026f0973a2f0a74fa813132f6a16f7499c3a' // debug