aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2014-01-24 09:47:00 +0100
committerSamuel Tardieu <sam@rfc1149.net>2014-01-24 09:47:00 +0100
commita30ff552cc8883a87d3f45ff02e7d295e1aaf587 (patch)
tree814a3111e40e8389a003e02ab272ea11402a6c61
parent90a626cd4230f9146918d1627b7251f64d054144 (diff)
downloadcgeo-a30ff552cc8883a87d3f45ff02e7d295e1aaf587.zip
cgeo-a30ff552cc8883a87d3f45ff02e7d295e1aaf587.tar.gz
cgeo-a30ff552cc8883a87d3f45ff02e7d295e1aaf587.tar.bz2
Fix #3568: fresh image taken may fail to be added to log
-rw-r--r--main/src/cgeo/geocaching/ImageSelectActivity.java84
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) {