Camera plugin (HTC Incredible) is crashing on 2.3.4 devices without SD card
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/b9ddc9e6 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/b9ddc9e6 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/b9ddc9e6 Branch: refs/heads/master Commit: b9ddc9e678e5fdaca6a49fbfaea5e375ac4c3871 Parents: ccdd2fd Author: Iurii Okhmat <[email protected]> Authored: Fri Nov 9 16:40:56 2012 -0800 Committer: Iurii Okhmat <[email protected]> Committed: Fri Nov 9 16:40:56 2012 -0800 ---------------------------------------------------------------------- .../src/org/apache/cordova/CameraLauncher.java | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/b9ddc9e6/framework/src/org/apache/cordova/CameraLauncher.java ---------------------------------------------------------------------- diff --git a/framework/src/org/apache/cordova/CameraLauncher.java b/framework/src/org/apache/cordova/CameraLauncher.java index f9cfb94..0dc02a4 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); }
