[ 
https://issues.apache.org/jira/browse/CB-1212?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Simon MacDonald reassigned CB-1212:
-----------------------------------

    Assignee: Simon MacDonald  (was: Joe Bowser)
    
> When camera is started, and then cancelled with no photo, attempt to read 
> exif data results in fatal error
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: CB-1212
>                 URL: https://issues.apache.org/jira/browse/CB-1212
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android
>    Affects Versions: 2.0.0
>         Environment: Dell Streak device using SDK version 7 
>            Reporter: Phil Snell
>            Assignee: Simon MacDonald
>
> If you start the camera, it loads normally, and then when you click cancel 
> right after that, it causes a fatal error. This is because it's trying to 
> initialize the exif data, but no image exists. What ends up happening is an 
> error when parseInt is called on null. Selected error messages:
> E/AndroidRuntime(3206): Caused by: java.lang.NumberFormatException: unable to 
> parse 'null' as integer
> E/AndroidRuntime(3206): at 
> org.apache.cordova.ExifHelper.getOrientation(ExifHelper.java:167)
> E/AndroidRuntime(3206): at 
> org.apache.cordova.CameraLauncher.onActivityResult(CameraLauncher.java:282)
> I found a fix that works for me by editing CameraLauncher.onActivityResult. I 
> moved the code that deals with exif to inside the conditional:
> if (resultCode == Activity.RESULT_OK) {
> because this is when you know there is an image available. Diff:
> diff --git a/framework/src/org/apache/cordova/CameraLauncher.java 
> b/framework/src/org/apache/cordova/CameraLauncher.java
> index 6d05c64..48c5676 100755
> --- a/framework/src/org/apache/cordova/CameraLauncher.java
> +++ b/framework/src/org/apache/cordova/CameraLauncher.java
> @@ -273,19 +273,22 @@ public class CameraLauncher extends Plugin implements 
> MediaScannerConnectionClie
>  
>          // If CAMERA
>          if (srcType == CAMERA) {
> -            // Create an ExifHelper to save the exif data that is lost 
> during compression
> -            ExifHelper exif = new ExifHelper();
> -            try {
> -                if (this.encodingType == JPEG) {
> -                    
> exif.createInFile(DirectoryManager.getTempDirectoryPath(this.cordova.getActivity())
>  + "/.Pic.jpg");
> -                    exif.readExifData();
> -                    rotate = exif.getOrientation();
> -                }
> -            } catch (IOException e) {
> -                e.printStackTrace();
> -            }
> +
>              // If image available
>              if (resultCode == Activity.RESULT_OK) {
> +
> +                // Create an ExifHelper to save the exif data that is lost 
> during compression
> +                ExifHelper exif = new ExifHelper();
> +                try {
> +                    if (this.encodingType == JPEG) {
> +                        
> exif.createInFile(DirectoryManager.getTempDirectoryPath(this.cordova.getActivity())
>  + "/.Pic.jpg");
> +                        exif.readExifData();
> +                        rotate = exif.getOrientation();
> +                    }
> +                } catch (IOException e) {
> +                    e.printStackTrace();
> +                }
> +                
>                  try {
>                      Bitmap bitmap = null;
>                      Uri uri = null;
>  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to