OSDN Git Service

Fix NPE in ImageLoader.
authorOwen Lin <owenlin@google.com>
Thu, 4 Oct 2012 08:15:07 +0000 (16:15 +0800)
committerOwen Lin <owenlin@google.com>
Thu, 4 Oct 2012 08:37:34 +0000 (16:37 +0800)
bug: 7275805
Change-Id: Ied04553a97efe5b4996418f20d834d6bd0893976

src/com/android/gallery3d/filtershow/cache/ImageLoader.java

index 100a17b..ac16c13 100644 (file)
@@ -1,22 +1,7 @@
 
 package com.android.gallery3d.filtershow.cache;
 
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Vector;
-
-import com.android.gallery3d.common.Utils;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.HistoryAdapter;
-import com.android.gallery3d.filtershow.imageshow.ImageShow;
-import com.android.gallery3d.filtershow.presets.ImagePreset;
-import com.android.gallery3d.filtershow.tools.SaveCopyTask;
-import com.android.gallery3d.filtershow.tools.ProcessedBitmap;
-import com.android.gallery3d.R;
-
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.res.Resources;
 import android.database.Cursor;
@@ -29,6 +14,22 @@ import android.net.Uri;
 import android.provider.MediaStore;
 import android.util.Log;
 
+import com.android.gallery3d.R;
+import com.android.gallery3d.common.Utils;
+import com.android.gallery3d.filtershow.FilterShowActivity;
+import com.android.gallery3d.filtershow.HistoryAdapter;
+import com.android.gallery3d.filtershow.imageshow.ImageShow;
+import com.android.gallery3d.filtershow.presets.ImagePreset;
+import com.android.gallery3d.filtershow.tools.ProcessedBitmap;
+import com.android.gallery3d.filtershow.tools.SaveCopyTask;
+
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Vector;
+
 public class ImageLoader {
 
     private static final String LOGTAG = "ImageLoader";
@@ -66,6 +67,10 @@ public class ImageLoader {
     }
 
     private int getOrientation(Uri uri) {
+        if (ContentResolver.SCHEME_FILE.equals(uri.getScheme())) {
+            return getOrientationFromPath(uri.getPath());
+        }
+
         Cursor cursor = null;
         try {
             cursor = mContext.getContentResolver().query(uri,
@@ -73,17 +78,12 @@ public class ImageLoader {
                         MediaStore.Images.ImageColumns.ORIENTATION
                     },
                     null, null, null);
+            return cursor.moveToNext() ? cursor.getInt(0) : -1;
         } catch (SQLiteException e){
-            Utils.closeSilently(cursor);
             return ExifInterface.ORIENTATION_UNDEFINED;
+        } finally {
+            Utils.closeSilently(cursor);
         }
-
-        if (cursor.getCount() != 1) {
-            return -1;
-        }
-
-        cursor.moveToFirst();
-        return cursor.getInt(0);
     }
 
     private int getOrientationFromPath(String path) {