From 8f3bf1ab211c81437d5bf021533ea47666ebf113 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 10 Sep 2020 09:30:31 +0200 Subject: [PATCH] Improved image error handling --- .../main/java/eu/faircode/email/ImageHelper.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ImageHelper.java b/app/src/main/java/eu/faircode/email/ImageHelper.java index 82d17e0729..3af81bdd6d 100644 --- a/app/src/main/java/eu/faircode/email/ImageHelper.java +++ b/app/src/main/java/eu/faircode/email/ImageHelper.java @@ -544,7 +544,7 @@ class ImageHelper { return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); } - private static Drawable getCachedImage(Context context, long id, String source) throws IOException { + private static Drawable getCachedImage(Context context, long id, String source) { if (id < 0) return null; @@ -557,7 +557,12 @@ class ImageHelper { DisplayMetrics dm = context.getResources().getDisplayMetrics(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) - return getScaledDrawable(context, file, dm.widthPixels); + try { + return getScaledDrawable(context, file, dm.widthPixels); + } catch (IOException ex) { + Log.i(ex); + return null; + } Bitmap bm = BitmapFactory.decodeFile(file.getAbsolutePath()); if (bm != null) { @@ -660,7 +665,7 @@ class ImageHelper { } @RequiresApi(api = Build.VERSION_CODES.P) - static Drawable getScaledDrawable(Context context, File file, int scaleToPixels) { + static Drawable getScaledDrawable(Context context, File file, int scaleToPixels) throws IOException { Drawable d; try { @@ -680,6 +685,8 @@ class ImageHelper { }); } catch (Throwable ex) { Log.i(ex); + if (ex instanceof IOException) + throw ex; /* Samsung: android.graphics.ImageDecoder$DecodeException: Failed to create image decoder with message 'unimplemented'Input contained an error.