You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Andrew Grieve (JIRA)" <ji...@apache.org> on 2014/06/27 20:00:33 UTC

[jira] [Resolved] (CB-6875) navigator.camera.getPicture throws exception and crashes app on Android

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

Andrew Grieve resolved CB-6875.
-------------------------------

    Resolution: Fixed

Fixed in 0.3.1-dev

> navigator.camera.getPicture throws exception and crashes app on Android
> -----------------------------------------------------------------------
>
>                 Key: CB-6875
>                 URL: https://issues.apache.org/jira/browse/CB-6875
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Plugin Camera
>    Affects Versions: 3.4.0
>         Environment: Android 4.1.2, HTC Desire 500 (without SDCard!)
>            Reporter: Dominik Pesch
>              Labels: bug,, exception
>
> On one of our test devices (HTC Desire 500 with Android 4.1.2) our app crashes when getting a picture from the camera. As [~wedgberto] describes: the exception will be thrown if no SD card is mounted. But the camera app stores the photo and you can get it later from the photo album. (please see https://issues.apache.org/jira/browse/CB-5133?focusedCommentId=13874707&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13874707)
> The HTC throws an IllegealStateException in
> {code:title=CameraLauncher.java#getUriFromMediaStore()|borderStyle=solid}
> try {
>             uri = this.cordova.getActivity().getContentResolver().insert(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
>         } catch (UnsupportedOperationException e) {
> // ...
> }
> // ...
> {code}
> The IllegalStateException won't be catched and the app will be killed:
> {noformat}
> 06-04 10:56:43.800: E/JHEAD(2816): can't open '/data/data/com.example.package/cache/.Pic.jpg'
> 06-04 10:56:43.830: W/dalvikvm(2816): threadid=1: thread exiting with uncaught exception (group=0x40cc7600)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): FATAL EXCEPTION: main
> 06-04 10:56:43.850: E/AndroidRuntime(2816): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=34, result=-1, data=null} to activity {com.example.package/com.example.package.Finanzchecker}: java.lang.IllegalStateException: Unable to create new file: /storage/sdcard0/DCIM/Camera/1401872203812.jpg
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:3660)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:3710)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.app.ActivityThread.access$1100(ActivityThread.java:151)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1378)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.os.Handler.dispatchMessage(Handler.java:99)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.os.Looper.loop(Looper.java:155)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.app.ActivityThread.main(ActivityThread.java:5536)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at java.lang.reflect.Method.invokeNative(Native Method)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at java.lang.reflect.Method.invoke(Method.java:511)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1074)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:841)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at dalvik.system.NativeStart.main(Native Method)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): Caused by: java.lang.IllegalStateException: Unable to create new file: /storage/sdcard0/DCIM/Camera/1401872203812.jpg
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.os.Parcel.readException(Parcel.java:1442)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:188)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.content.ContentProviderProxy.insert(ContentProviderNative.java:482)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.content.ContentResolver.insert(ContentResolver.java:874)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at org.apache.cordova.camera.CameraLauncher.getUriFromMediaStore(CameraLauncher.java:737)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at org.apache.cordova.camera.CameraLauncher.processResultFromCamera(CameraLauncher.java:382)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at org.apache.cordova.camera.CameraLauncher.onActivityResult(CameraLauncher.java:624)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at org.apache.cordova.CordovaActivity.onActivityResult(CordovaActivity.java:897)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.app.Activity.dispatchActivityResult(Activity.java:5275)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:3656)
> 06-04 10:56:43.850: E/AndroidRuntime(2816): 	... 11 more
> 06-04 11:01:43.940: D/Process(2816): killProcess, pid=2816
> {noformat}
> We've catched {{RuntimeExcpetion}} instead of {{UnsupportedOperationException}} to catch also the {{IllegalStateException}} and got a follow up {{NullPointerException}} in {{processResultFromCamera(CameraLauncher.java:384)}} from {{FileHelper.getRealPath(FileHelper.java:80)}}. After fixing this too, the app won't be killed anymore.
> We've tested also other apps (like the twitter app) which can't get the photo from the camera too. But they won't crash/be killed.
> I've created a pull request: https://github.com/apache/cordova-plugin-camera/pull/29



--
This message was sent by Atlassian JIRA
(v6.2#6252)