aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2015-10-03 00:16:23 +0200
committerrsudev <rasch@munin-soft.de>2015-10-03 00:16:23 +0200
commit0498e52f9a09b4499933fe107f252b9cf2b8d6d3 (patch)
treec4024d2f375809b6eff7fca209c0eed2dd5ce8da
parent596c9e4e77d22cb75ffdbf92331da604f66b878d (diff)
downloadcgeo-0498e52f9a09b4499933fe107f252b9cf2b8d6d3.zip
cgeo-0498e52f9a09b4499933fe107f252b9cf2b8d6d3.tar.gz
cgeo-0498e52f9a09b4499933fe107f252b9cf2b8d6d3.tar.bz2
Fixes #5217, NPE selecting image
-rw-r--r--main/src/cgeo/geocaching/ImageSelectActivity.java93
1 files changed, 50 insertions, 43 deletions
diff --git a/main/src/cgeo/geocaching/ImageSelectActivity.java b/main/src/cgeo/geocaching/ImageSelectActivity.java
index 32cc332..0faa3ab 100644
--- a/main/src/cgeo/geocaching/ImageSelectActivity.java
+++ b/main/src/cgeo/geocaching/ImageSelectActivity.java
@@ -1,5 +1,8 @@
package cgeo.geocaching;
+import butterknife.Bind;
+import butterknife.ButterKnife;
+
import cgeo.geocaching.activity.AbstractActionBarActivity;
import cgeo.geocaching.files.LocalStorage;
import cgeo.geocaching.settings.Settings;
@@ -35,9 +38,6 @@ import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
-import butterknife.Bind;
-import butterknife.ButterKnife;
-
public class ImageSelectActivity extends AbstractActionBarActivity {
@Bind(R.id.caption) protected EditText captionView;
@@ -235,52 +235,59 @@ public class ImageSelectActivity extends AbstractActionBarActivity {
// camera application.
if (data != null) {
final Uri selectedImage = data.getData();
- if (Build.VERSION.SDK_INT < VERSION_CODES.KITKAT) {
- final String[] filePathColumn = { MediaColumns.DATA };
-
- Cursor cursor = null;
- try {
- cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
- if (cursor == null) {
+ // In principal can selectedImage be null
+ if (selectedImage != null) {
+ if (Build.VERSION.SDK_INT < VERSION_CODES.KITKAT) {
+ final String[] filePathColumn = { MediaColumns.DATA };
+
+ Cursor cursor = null;
+ try {
+ cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
+ if (cursor == null) {
+ showFailure();
+ return;
+ }
+ cursor.moveToFirst();
+
+ final int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
+ final String filePath = cursor.getString(columnIndex);
+ if (StringUtils.isBlank(filePath)) {
+ showFailure();
+ return;
+ }
+ image = new Image.Builder().setUrl(filePath).build();
+ } catch (final Exception e) {
+ Log.e("ImageSelectActivity.onActivityResult", e);
showFailure();
- return;
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
}
- cursor.moveToFirst();
- final int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
- final String filePath = cursor.getString(columnIndex);
- if (StringUtils.isBlank(filePath)) {
- showFailure();
- return;
- }
- image = new Image.Builder().setUrl(filePath).build();
- } catch (final 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();
+ if (outputFile != null) {
+ output = new FileOutputStream(outputFile);
+ LocalStorage.copy(input, output);
+ image = new Image.Builder().setUrl(outputFile).build();
+ }
+ } catch (final 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();
- if (outputFile != null) {
- output = new FileOutputStream(outputFile);
- LocalStorage.copy(input, output);
- image = new Image.Builder().setUrl(outputFile).build();
- }
- } catch (final FileNotFoundException e) {
- Log.e("ImageSelectActivity.onStartResult", e);
- } finally {
- IOUtils.closeQuietly(input);
- IOUtils.closeQuietly(output);
- }
+ // Image capture failed, advise user
+ showFailure();
+ return;
}
}