log swallowed exceptions in android share intent module

The three catch blocks discarded exceptions entirely, making future
diagnosis hard. Add Log.w with the exception at each catch site so
unexpected failure modes (OOM on large bitmaps, truncated streams, etc.)
surface in Logcat during user-reported issues, while keeping the
crash-isolation behavior intact.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
(cherry picked from commit 4b53931468feab72da1bbb8c9af5de6bf5a97038)
This commit is contained in:
Eric Bailey
2026-06-05 16:36:23 -05:00
parent 5eeb80fe96
commit c808a10577
@@ -6,6 +6,7 @@ import android.media.MediaMetadataRetriever
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.provider.MediaStore import android.provider.MediaStore
import android.util.Log
import androidx.core.net.toUri import androidx.core.net.toUri
import expo.modules.kotlin.modules.Module import expo.modules.kotlin.modules.Module
import expo.modules.kotlin.modules.ModuleDefinition import expo.modules.kotlin.modules.ModuleDefinition
@@ -13,6 +14,8 @@ import java.io.File
import java.io.FileOutputStream import java.io.FileOutputStream
import java.net.URLEncoder import java.net.URLEncoder
private const val TAG = "ExpoReceiveAndroidIntents"
enum class AttachmentType { enum class AttachmentType {
IMAGE, IMAGE,
VIDEO, VIDEO,
@@ -165,6 +168,7 @@ class ExpoReceiveAndroidIntentsModule : Module() {
input.use { it.copyTo(out) } input.use { it.copyTo(out) }
} }
} catch (e: Exception) { } catch (e: Exception) {
Log.w(TAG, "Failed to copy shared video to cache", e)
return return
} }
@@ -188,6 +192,7 @@ class ExpoReceiveAndroidIntentsModule : Module() {
} catch (e: Exception) { } catch (e: Exception) {
// The URI may be unreadable (revoked permission, deleted file, or a // The URI may be unreadable (revoked permission, deleted file, or a
// provider that rejects the read). Skip this image rather than crash. // provider that rejects the read). Skip this image rather than crash.
Log.w(TAG, "Failed to read shared image", e)
return null return null
} ?: return null } ?: return null
// We have to save this so that we can access it later when uploading the image. // We have to save this so that we can access it later when uploading the image.
@@ -215,6 +220,7 @@ class ExpoReceiveAndroidIntentsModule : Module() {
height = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)?.toIntOrNull() height = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT)?.toIntOrNull()
} catch (e: Exception) { } catch (e: Exception) {
// The URI may be unreadable or not a valid media source. Skip rather than crash. // The URI may be unreadable or not a valid media source. Skip rather than crash.
Log.w(TAG, "Failed to read shared video metadata", e)
return null return null
} finally { } finally {
retriever.release() retriever.release()