diff options
author | rsudev <rasch@munin-soft.de> | 2015-10-03 00:16:23 +0200 |
---|---|---|
committer | rsudev <rasch@munin-soft.de> | 2015-10-03 00:16:23 +0200 |
commit | 0498e52f9a09b4499933fe107f252b9cf2b8d6d3 (patch) | |
tree | c4024d2f375809b6eff7fca209c0eed2dd5ce8da | |
parent | 596c9e4e77d22cb75ffdbf92331da604f66b878d (diff) | |
download | cgeo-0498e52f9a09b4499933fe107f252b9cf2b8d6d3.zip cgeo-0498e52f9a09b4499933fe107f252b9cf2b8d6d3.tar.gz cgeo-0498e52f9a09b4499933fe107f252b9cf2b8d6d3.tar.bz2 |
Fixes #5217, NPE selecting image
-rw-r--r-- | main/src/cgeo/geocaching/ImageSelectActivity.java | 93 |
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; } } |