Fix crash in getPhotoPickSize

Handle null or empty cursors.

Bug:12619944
Change-Id: I5cae8c16e29474afbc78a172f39bbb04daec446a
diff --git a/src/com/android/contacts/activities/AttachPhotoActivity.java b/src/com/android/contacts/activities/AttachPhotoActivity.java
index c09af3c..23c5398 100644
--- a/src/com/android/contacts/activities/AttachPhotoActivity.java
+++ b/src/com/android/contacts/activities/AttachPhotoActivity.java
@@ -101,8 +101,9 @@
                     new String[]{DisplayPhoto.DISPLAY_MAX_DIM}, null, null, null);
             if (c != null) {
                 try {
-                    c.moveToFirst();
-                    mPhotoDim = c.getInt(0);
+                    if (c.moveToFirst()) {
+                        mPhotoDim = c.getInt(0);
+                    }
                 } finally {
                     c.close();
                 }
diff --git a/src/com/android/contacts/detail/PhotoSelectionHandler.java b/src/com/android/contacts/detail/PhotoSelectionHandler.java
index 52a292b..d2363de 100644
--- a/src/com/android/contacts/detail/PhotoSelectionHandler.java
+++ b/src/com/android/contacts/detail/PhotoSelectionHandler.java
@@ -59,6 +59,11 @@
     private static final int REQUEST_CODE_PHOTO_PICKED_WITH_DATA = 1002;
     private static final int REQUEST_CROP_PHOTO = 1003;
 
+    // Height and width (in pixels) to request for the photo - queried from the provider.
+    private static int mPhotoDim;
+    // Default photo dimension to use if unable to query the provider.
+    private static final int mDefaultPhotoDim = 720;
+
     protected final Context mContext;
     private final View mPhotoView;
     private final int mPhotoMode;
@@ -263,15 +268,23 @@
     }
 
     private int getPhotoPickSize() {
+        if (mPhotoDim != 0) {
+            return mPhotoDim;
+        }
+
         // Note that this URI is safe to call on the UI thread.
         Cursor c = mContext.getContentResolver().query(DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI,
                 new String[]{DisplayPhoto.DISPLAY_MAX_DIM}, null, null, null);
-        try {
-            c.moveToFirst();
-            return c.getInt(0);
-        } finally {
-            c.close();
+        if (c != null) {
+            try {
+                if (c.moveToFirst()) {
+                    mPhotoDim = c.getInt(0);
+                }
+            } finally {
+                c.close();
+            }
         }
+        return mPhotoDim != 0 ? mPhotoDim : mDefaultPhotoDim;
     }
 
     /**