Merge "Check URI is valid for loading images" into rvc-dev

This commit is contained in:
Beth Thibodeau
2020-04-27 20:29:30 +00:00
committed by Android (Google) Code Review

View File

@@ -19,6 +19,7 @@ package com.android.systemui.media;
import android.annotation.LayoutRes; import android.annotation.LayoutRes;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@@ -39,6 +40,7 @@ import android.media.session.MediaSession;
import android.media.session.PlaybackState; import android.media.session.PlaybackState;
import android.net.Uri; import android.net.Uri;
import android.service.media.MediaBrowserService; import android.service.media.MediaBrowserService;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -435,7 +437,7 @@ public class MediaControlPanel {
// First look in URI fields // First look in URI fields
for (String field : ART_URIS) { for (String field : ART_URIS) {
String uriString = metadata.getString(field); String uriString = metadata.getString(field);
if (uriString != null) { if (!TextUtils.isEmpty(uriString)) {
albumArt = loadBitmapFromUri(Uri.parse(uriString)); albumArt = loadBitmapFromUri(Uri.parse(uriString));
if (albumArt != null) { if (albumArt != null) {
Log.d(TAG, "loaded art from " + field); Log.d(TAG, "loaded art from " + field);
@@ -463,6 +465,17 @@ public class MediaControlPanel {
* @return bitmap, or null if couldn't be loaded * @return bitmap, or null if couldn't be loaded
*/ */
private Bitmap loadBitmapFromUri(Uri uri) { private Bitmap loadBitmapFromUri(Uri uri) {
// ImageDecoder requires a scheme of the following types
if (uri.getScheme() == null) {
return null;
}
if (!uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)
&& !uri.getScheme().equals(ContentResolver.SCHEME_ANDROID_RESOURCE)
&& !uri.getScheme().equals(ContentResolver.SCHEME_FILE)) {
return null;
}
ImageDecoder.Source source = ImageDecoder.createSource(mContext.getContentResolver(), uri); ImageDecoder.Source source = ImageDecoder.createSource(mContext.getContentResolver(), uri);
try { try {
return ImageDecoder.decodeBitmap(source); return ImageDecoder.decodeBitmap(source);