diff options
| author | TreeHugger Robot <treehugger-gerrit@google.com> | 2020-08-24 03:55:46 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-08-24 03:55:46 +0000 |
| commit | 8517455df4c8ab186a7f2bb9f0f1376916ce44d5 (patch) | |
| tree | 78de55ed594e0d6a28ee720275c556a686134151 /core/java | |
| parent | 540ff060c8f624a2d7734abad0146127b880c111 (diff) | |
| parent | 6bf25fdfc489e3728d416d252d8cb137d073feab (diff) | |
Merge "Handle NPE in LocalImageResolver to avoid crashing systemui" into rvc-qpr-dev am: 6bf25fdfc4
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12421224
Change-Id: Ia1613a1a7e5524112b8221fbc608270d4dd87664
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/widget/LocalImageResolver.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/core/java/com/android/internal/widget/LocalImageResolver.java b/core/java/com/android/internal/widget/LocalImageResolver.java index 2302de2cd058..b4e108faee2d 100644 --- a/core/java/com/android/internal/widget/LocalImageResolver.java +++ b/core/java/com/android/internal/widget/LocalImageResolver.java @@ -23,6 +23,7 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.util.Log; import java.io.IOException; import java.io.InputStream; @@ -31,6 +32,7 @@ import java.io.InputStream; * A class to extract Bitmaps from a MessagingStyle message. */ public class LocalImageResolver { + private static final String TAG = LocalImageResolver.class.getSimpleName(); private static final int MAX_SAFE_ICON_SIZE_PX = 480; @@ -60,11 +62,18 @@ public class LocalImageResolver { private static BitmapFactory.Options getBoundsOptionsForImage(Uri uri, Context context) throws IOException { - InputStream input = context.getContentResolver().openInputStream(uri); BitmapFactory.Options onlyBoundsOptions = new BitmapFactory.Options(); - onlyBoundsOptions.inJustDecodeBounds = true; - BitmapFactory.decodeStream(input, null, onlyBoundsOptions); - input.close(); + try (InputStream input = context.getContentResolver().openInputStream(uri)) { + if (input == null) { + throw new IllegalArgumentException(); + } + onlyBoundsOptions.inJustDecodeBounds = true; + BitmapFactory.decodeStream(input, null, onlyBoundsOptions); + } catch (IllegalArgumentException iae) { + onlyBoundsOptions.outWidth = -1; + onlyBoundsOptions.outHeight = -1; + Log.e(TAG, "error loading image", iae); + } return onlyBoundsOptions; } |
