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;
}
/**