diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2014-01-24 09:47:00 +0100 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2014-01-24 09:47:00 +0100 |
| commit | a30ff552cc8883a87d3f45ff02e7d295e1aaf587 (patch) | |
| tree | 814a3111e40e8389a003e02ab272ea11402a6c61 /main/src/cgeo/geocaching/ImageSelectActivity.java | |
| parent | 90a626cd4230f9146918d1627b7251f64d054144 (diff) | |
| download | cgeo-a30ff552cc8883a87d3f45ff02e7d295e1aaf587.zip cgeo-a30ff552cc8883a87d3f45ff02e7d295e1aaf587.tar.gz cgeo-a30ff552cc8883a87d3f45ff02e7d295e1aaf587.tar.bz2 | |
Fix #3568: fresh image taken may fail to be added to log
Diffstat (limited to 'main/src/cgeo/geocaching/ImageSelectActivity.java')
| -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) { |
