OSDN Git Service

Fix NPE
authorMarco Nelissen <marcone@google.com>
Tue, 17 Feb 2015 22:31:33 +0000 (14:31 -0800)
committerThe Android Automerger <android-build@google.com>
Wed, 18 Feb 2015 00:32:03 +0000 (16:32 -0800)
Path can be null if sd card was ejected, and we shouldn't make a thumbnail
in that case.

Bug: 19380821
Change-Id: Iee69effdd321622de026ad7b57c74cf9da81a176

core/java/android/provider/MediaStore.java

index 736ec54..5afbd6d 100644 (file)
@@ -638,7 +638,6 @@ public final class MediaStore {
         static Bitmap getThumbnail(ContentResolver cr, long origId, long groupId, int kind,
                 BitmapFactory.Options options, Uri baseUri, boolean isVideo) {
             Bitmap bitmap = null;
-            String filePath = null;
             // Log.v(TAG, "getThumbnail: origId="+origId+", kind="+kind+", isVideo="+isVideo);
             // If the magic is non-zero, we simply return thumbnail if it does exist.
             // querying MediaProvider and simply return thumbnail.
@@ -710,18 +709,18 @@ public final class MediaStore {
                     Uri uri = Uri.parse(
                             baseUri.buildUpon().appendPath(String.valueOf(origId))
                                     .toString().replaceFirst("thumbnails", "media"));
-                    if (filePath == null) {
-                        if (c != null) c.close();
-                        c = cr.query(uri, PROJECTION, null, null, null);
-                        if (c == null || !c.moveToFirst()) {
-                            return null;
-                        }
-                        filePath = c.getString(1);
+                    if (c != null) c.close();
+                    c = cr.query(uri, PROJECTION, null, null, null);
+                    if (c == null || !c.moveToFirst()) {
+                        return null;
                     }
-                    if (isVideo) {
-                        bitmap = ThumbnailUtils.createVideoThumbnail(filePath, kind);
-                    } else {
-                        bitmap = ThumbnailUtils.createImageThumbnail(filePath, kind);
+                    String filePath = c.getString(1);
+                    if (filePath != null) {
+                        if (isVideo) {
+                            bitmap = ThumbnailUtils.createVideoThumbnail(filePath, kind);
+                        } else {
+                            bitmap = ThumbnailUtils.createImageThumbnail(filePath, kind);
+                        }
                     }
                 }
             } catch (SQLiteException ex) {