aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/ImageSelectActivity.java
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2013-08-25 22:32:04 +0200
committerSamuel Tardieu <sam@rfc1149.net>2013-08-25 22:32:41 +0200
commit9dd04857add2404db6e50647dd4b3ffb538b11b3 (patch)
treebdeca15661f704bccc8fd823ed2761f68c20a944 /main/src/cgeo/geocaching/ImageSelectActivity.java
parent9ac521c77b333b076823fc9f10e79f6258c04ddc (diff)
downloadcgeo-9dd04857add2404db6e50647dd4b3ffb538b11b3.zip
cgeo-9dd04857add2404db6e50647dd4b3ffb538b11b3.tar.gz
cgeo-9dd04857add2404db6e50647dd4b3ffb538b11b3.tar.bz2
fix #3195: NPE when selected image cannot be decoded
Diffstat (limited to 'main/src/cgeo/geocaching/ImageSelectActivity.java')
-rw-r--r--main/src/cgeo/geocaching/ImageSelectActivity.java30
1 files changed, 19 insertions, 11 deletions
diff --git a/main/src/cgeo/geocaching/ImageSelectActivity.java b/main/src/cgeo/geocaching/ImageSelectActivity.java
index 738b9a7..66c0707 100644
--- a/main/src/cgeo/geocaching/ImageSelectActivity.java
+++ b/main/src/cgeo/geocaching/ImageSelectActivity.java
@@ -159,16 +159,20 @@ public class ImageSelectActivity extends AbstractActivity {
public void saveImageInfo(boolean saveInfo) {
if (saveInfo) {
- String filename = writeScaledImage(imageUri.getPath());
- imageUri = Uri.parse(filename);
- Intent intent = new Intent();
- syncEditTexts();
- intent.putExtra(EXTRAS_CAPTION, imageCaption);
- intent.putExtra(EXTRAS_DESCRIPTION, imageDescription);
- intent.putExtra(EXTRAS_URI_AS_STRING, imageUri.toString());
- intent.putExtra(EXTRAS_SCALE, scaleChoiceIndex);
-
- setResult(RESULT_OK, intent);
+ final String filename = writeScaledImage(imageUri.getPath());
+ if (filename != null) {
+ imageUri = Uri.parse(filename);
+ final Intent intent = new Intent();
+ syncEditTexts();
+ intent.putExtra(EXTRAS_CAPTION, imageCaption);
+ intent.putExtra(EXTRAS_DESCRIPTION, imageDescription);
+ intent.putExtra(EXTRAS_URI_AS_STRING, imageUri.toString());
+ intent.putExtra(EXTRAS_SCALE, scaleChoiceIndex);
+ setResult(RESULT_OK, intent);
+ } else {
+ showToast(res.getString(R.string.err_select_logimage_failed));
+ setResult(RESULT_CANCELED);
+ }
} else {
setResult(RESULT_CANCELED);
}
@@ -263,7 +267,7 @@ public class ImageSelectActivity extends AbstractActivity {
* Scales and writes the scaled image.
*
* @param filePath
- * @return
+ * @return the scaled image path, or <tt>null</tt> if the image cannot be decoded
*/
private String writeScaledImage(final String filePath) {
scaleChoiceIndex = scaleView.getSelectedItemPosition();
@@ -284,6 +288,10 @@ public class ImageSelectActivity extends AbstractActivity {
} else {
image = BitmapFactory.decodeFile(filePath);
}
+ // If image decoding fail, return null
+ if (image == null) {
+ return null;
+ }
final BitmapDrawable scaledImage = ImageUtils.scaleBitmapTo(image, maxXY, maxXY);
final String uploadFilename = getOutputImageFile().getPath();
ImageUtils.storeBitmap(scaledImage.getBitmap(), Bitmap.CompressFormat.JPEG, 75, uploadFilename);