diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/ImageSelectActivity.java | 84 |
1 files changed, 44 insertions, 40 deletions
diff --git a/main/src/cgeo/geocaching/ImageSelectActivity.java b/main/src/cgeo/geocaching/ImageSelectActivity.java index 2fd7fb9..12d1e84 100644 --- a/main/src/cgeo/geocaching/ImageSelectActivity.java +++ b/main/src/cgeo/geocaching/ImageSelectActivity.java @@ -224,51 +224,55 @@ public class ImageSelectActivity extends AbstractActivity { return; } - final Uri selectedImage = data.getData(); - if (Build.VERSION.SDK_INT < VERSION_CODES.KITKAT) { - String[] filePathColumn = { MediaColumns.DATA }; - - Cursor cursor = null; - try { - cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); - if (cursor == null) { + // null is an acceptable result if the image has been placed in the imageUri file by the + // camera application. + if (data != null) { + final Uri selectedImage = data.getData(); + if (Build.VERSION.SDK_INT < VERSION_CODES.KITKAT) { + String[] filePathColumn = { MediaColumns.DATA }; + + Cursor cursor = null; + try { + cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null); + if (cursor == null) { + showFailure(); + return; + } + cursor.moveToFirst(); + + int columnIndex = cursor.getColumnIndex(filePathColumn[0]); + String filePath = cursor.getString(columnIndex); + if (StringUtils.isBlank(filePath)) { + showFailure(); + return; + } + imageUri = Uri.parse(filePath); + } catch (Exception e) { + Log.e("ImageSelectActivity.onActivityResult", e); showFailure(); - return; + } finally { + if (cursor != null) { + cursor.close(); + } } - cursor.moveToFirst(); - int columnIndex = cursor.getColumnIndex(filePathColumn[0]); - String filePath = cursor.getString(columnIndex); - if (StringUtils.isBlank(filePath)) { - showFailure(); - return; - } - imageUri = Uri.parse(filePath); - } catch (Exception e) { - Log.e("ImageSelectActivity.onActivityResult", e); - showFailure(); - } finally { - if (cursor != null) { - cursor.close(); + Log.d("SELECT IMAGE data = " + data.toString()); + } else { + InputStream input = null; + OutputStream output = null; + try { + input = getContentResolver().openInputStream(selectedImage); + final File outputFile = ImageUtils.getOutputImageFile(); + output = new FileOutputStream(outputFile); + LocalStorage.copy(input, output); + imageUri = Uri.fromFile(outputFile); + } catch (FileNotFoundException e) { + Log.e("ImageSelectActivity.onStartResult", e); + } finally { + IOUtils.closeQuietly(input); + IOUtils.closeQuietly(output); } } - - Log.d("SELECT IMAGE data = " + data.toString()); - } else { - InputStream input = null; - OutputStream output = null; - try { - input = getContentResolver().openInputStream(selectedImage); - final File outputFile = ImageUtils.getOutputImageFile(); - output = new FileOutputStream(outputFile); - LocalStorage.copy(input, output); - imageUri = Uri.fromFile(outputFile); - } catch (FileNotFoundException e) { - Log.e("ImageSelectActivity.onStartResult", e); - } finally { - IOUtils.closeQuietly(input); - IOUtils.closeQuietly(output); - } } if (requestCode == SELECT_NEW_IMAGE) { |
