Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-13954

NullPointerException when processing result from camera

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Cannot Reproduce
    • None
    • None
    • cordova-plugin-camera
    • None

    Description

      I have gotten a number of crash reports via the google play console for a null pointer exception (see below for stack).

       

      Over the last 60 days it has happened to 6 of my users, 28 times.

      Of those 28 times, 26 were on an S8, and 2 were on an S8+.

      All 28 times were on Android 7.0.

       

      Looking at the source code, it seems to be a problem when attempting to access the extras from the intent - the problem being that the extras return null (which the code doesn't expect):

      https://github.com/apache/cordova-plugin-camera/blob/e36482c7ba1e5dec07f68a246f3ecde8743d7cd6/src/android/CameraLauncher.java#L516

       

      java.lang.RuntimeException: 
       at android.app.ActivityThread.deliverResults (ActivityThread.java:4520)
       at android.app.ActivityThread.handleSendResult (ActivityThread.java:4563)
       at android.app.ActivityThread.-wrap22 (ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1698)
       at android.os.Handler.dispatchMessage (Handler.java:102)
       at android.os.Looper.loop (Looper.java:154)
       at android.app.ActivityThread.main (ActivityThread.java:6776)
       at java.lang.reflect.Method.invoke (Native Method)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
       at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)
      Caused by: java.lang.NullPointerException: 
       at org.apache.cordova.camera.CameraLauncher.processResultFromCamera (CameraLauncher.java:514)
       at org.apache.cordova.camera.CameraLauncher.onActivityResult (CameraLauncher.java:805)
       at org.apache.cordova.CordovaInterfaceImpl.onActivityResult (CordovaInterfaceImpl.java:152)
       at org.apache.cordova.CordovaActivity.onActivityResult (CordovaActivity.java:358)
       at android.app.Activity.dispatchActivityResult (Activity.java:7282)
       at android.app.ActivityThread.deliverResults (ActivityThread.java:4516)
      

        

      This is the calling code:

      navigator.camera.getPicture(onSuccess, onFail, {
          quality: 50,
          destinationType: Camera.DestinationType.DATA_URL,
          sourceType: navigator.camera.PictureSourceType.CAMERA,
          encodingType: Camera.EncodingType.JPEG,
          targetWidth: 1024,
          targetHeight: 1024,
          mediaType: Camera.MediaType.PICTURE,
          allowEdit: false,
          correctOrientation: true,
          saveToPhotoAlbum: false,
      })

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            bradzacher Brad Zacher
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: