From b9ddc9e678e5fdaca6a49fbfaea5e375ac4c3871 Mon Sep 17 00:00:00 2001 From: Iurii Okhmat Date: Fri, 9 Nov 2012 16:40:56 -0800 Subject: [PATCH] Camera plugin (HTC Incredible) is crashing on 2.3.4 devices without SD card --- .../src/org/apache/cordova/CameraLauncher.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/framework/src/org/apache/cordova/CameraLauncher.java b/framework/src/org/apache/cordova/CameraLauncher.java index f9cfb94a..0dc02a4a 100755 --- a/framework/src/org/apache/cordova/CameraLauncher.java +++ b/framework/src/org/apache/cordova/CameraLauncher.java @@ -35,6 +35,7 @@ import org.json.JSONArray; import org.json.JSONException; import android.app.Activity; +import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; @@ -289,6 +290,17 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect // If sending base64 image back if (destType == DATA_URL) { bitmap = getScaledBitmap(FileUtils.stripFileProtocol(imageUri.toString())); + if (bitmap == null) { + // Try to get the bitmap from intent. + bitmap = (Bitmap)intent.getExtras().get("data"); + } + + // Double-check the bitmap. + if (bitmap == null) { + Log.d(LOG_TAG, "I either have a null image path or bitmap"); + this.failPicture("Unable to create bitmap!"); + return; + } if (rotate != 0 && this.correctOrientation) { bitmap = getRotatedBitmap(rotate, bitmap, exif); @@ -567,6 +579,9 @@ public class CameraLauncher extends CordovaPlugin implements MediaScannerConnect options.inJustDecodeBounds = false; options.inSampleSize = calculateSampleSize(options.outWidth, options.outHeight, this.targetWidth, this.targetHeight); Bitmap unscaledBitmap = BitmapFactory.decodeFile(imagePath, options); + if (unscaledBitmap == null) { + return null; + } return Bitmap.createScaledBitmap(unscaledBitmap, widthHeight[0], widthHeight[1], true); }