Search code examples
androidcordovaandroid-4.2-jelly-bean

Phonegap Capture not working for jelly bean


I am facing issue regarding Phonegap Capture image function. Though this question has been asked many times before, but I found no solution. So I'm asking here again. I am trying to capture an Image and set it in my HTML page using phonegap. Here is my code:

function captureImage() {
navigator.device.capture.captureImage(captureSuccess, captureError, {limit: 1,
quality:100,
correctOrientation: true,
destinationType : Camera.DestinationType.FILE_URI, 
targetWidth: 800,
targetHeight: 800,
saveToPhotoAlbum: true });
}

function captureSuccess(mediaFiles) {
var i, len;
for (i = 0, len = mediaFiles.length; i < len; i += 1) {
uploadFile(mediaFiles[i]);
       }       
}

function captureError(error) {
var msg = 'An error occurred during capture: ' + error.code;
$("#errorNot1").fadeIn();
$("#errorMsg").text("Unable to capture image.");
}

function uploadFile(mediaFile) {
$(".contentdiv").css("display","none");
$("#takePhoto").css("display","block");
$("#fromLib").css("display","none");
path = mediaFile.fullPath,
name = mediaFile.name;
$('.largeImage').attr("src",path);
}

The problem is, its starting camera and capturing image. But when trying to set in HTML page, the app is crashing.

Here is my logcat output (My sdk is not updated and I'm trying to test the app with Android 4.1.1, so the logcat output might not be up to the mark):

??-?? ??:??:??.???: INFO/<unknown>(<unknown>): FATAL EXCEPTION: main
??-?? ??:??:??.???: INFO/<unknown>(<unknown>): java.lang.RuntimeException: Unable to resume activity {com.infy.qure/com.infy.qure.AndroidQuREActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.infy.qure/com.infy.qure.AndroidQuREActivity}: java.lang.NullPointerException
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2616)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2644)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2130)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.access$600(ActivityThread.java:140)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.os.Handler.dispatchMessage(Handler.java:99)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.os.Looper.loop(Looper.java:137)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.main(ActivityThread.java:4898)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.lang.reflect.Method.invokeNative(Native Method)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at java.lang.reflect.Method.invoke(Method.java:511)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at dalvik.system.NativeStart.main(Native Method)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.infy.qure/com.infy.qure.AndroidQuREActivity}: java.lang.NullPointerException
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3182)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2603)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     ... 12 more
??-?? ??:??:??.???: INFO/<unknown>(<unknown>): Caused by: java.lang.NullPointerException
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:850)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.Activity.dispatchActivityResult(Activity.java:5368)
??-?? ??:??:??.???: INFO/<unknown>(<unknown>):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3178)

I have tried all these solutions provided:

PhoneGap: Application crash taking portrait picture

code not working in Jelly Beans

Phonegap|Android 4 - App sometimes crashes when taking picture from PHOTOLIBRARY

But all these of no help. Same issue I'm facing while trying to get the image from photolibrary and setting in HTML.

The main thing I want to mention here is that, the above code is working fine with Samsung Galaxy sIII (Android 4.0.4) but not working in Galaxy sIII (Android 4.1.1). What might be the problem? Am I doing any mistake? Any input will be helpful.


Solution

  • I had the same issue before, I figured out that the issue was in my setting and not my app. Just make sure under Setting -> Developer Options -> apps -> and uncheck "Do not keep activities", because that kills the app once the camera is launched and it cant resume it again. hope it works for you