diff options
| author | 2020-08-24 03:07:11 +0000 | |
|---|---|---|
| committer | 2020-08-24 03:07:11 +0000 | |
| commit | 6bf25fdfc489e3728d416d252d8cb137d073feab (patch) | |
| tree | 726feac00115ef310284f767517955b0f2fbdff6 | |
| parent | 13603052315f0463d6b9450291e2451a738369f0 (diff) | |
| parent | 1a1c93f964a9754c3824a2259872523fe992caf8 (diff) | |
Merge "Handle NPE in LocalImageResolver to avoid crashing systemui" into rvc-qpr-dev
| -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; } |