Usando gli script originali presenti nelle API di Phonegap (sia dell’oggetto Camera, sia dell’oggetto Capture) può capitare che, programmando per android e cercando di scattare una foto per inserirla nelle proprie pagine, il risultato sia un bel messaggino d’errore del tipo:
unfortunately fotocamera has stopped
e il conseguente arresto della propria applicazione.
In una tale situazione il log potrebbe somigliare al seguente:
05-28 23:48:50.038: E/AndroidRuntime(2291): FATAL EXCEPTION: main
05-28 23:48:50.038: E/AndroidRuntime(2291): java.lang.RuntimeException: Unable to resume activity {it.econinformazione/it.econinformazione.EcoInfo}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {it.econinformazione/it.econinformazione.EcoInfo}: java.lang.NullPointerException
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2444)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.os.Handler.dispatchMessage(Handler.java:99)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.os.Looper.loop(Looper.java:137)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.main(ActivityThread.java:4424)
05-28 23:48:50.038: E/AndroidRuntime(2291): at java.lang.reflect.Method.invokeNative(Native Method)
05-28 23:48:50.038: E/AndroidRuntime(2291): at java.lang.reflect.Method.invoke(Method.java:511)
05-28 23:48:50.038: E/AndroidRuntime(2291): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-28 23:48:50.038: E/AndroidRuntime(2291): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-28 23:48:50.038: E/AndroidRuntime(2291): at dalvik.system.NativeStart.main(Native Method)
05-28 23:48:50.038: E/AndroidRuntime(2291): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {it.econinformazione/it.econinformazione.EcoInfo}: java.lang.NullPointerException
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.deliverResults(ActivityThread.java:2980)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2431)
05-28 23:48:50.038: E/AndroidRuntime(2291): ... 12 more
05-28 23:48:50.038: E/AndroidRuntime(2291): Caused by: java.lang.NullPointerException
05-28 23:48:50.038: E/AndroidRuntime(2291): at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:849)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.Activity.dispatchActivityResult(Activity.java:4649)
05-28 23:48:50.038: E/AndroidRuntime(2291): at android.app.ActivityThread.deliverResults(ActivityThread.java:2976)
05-28 23:48:50.038: E/AndroidRuntime(2291): ... 13 more
Se ci si trova in questa situazione, la prima cosa da fare è verificare che il proprio dispositivo mantenga in RAM le attività. Per fare questo andiamo in «impostazioni/Opzioni dello sviluppatore/Non conservare le attività» e togliamo la spunta!
Adesso riavviamo la nostra appliazione e riproviamo. Se il problema persiste… buona fortuna 😀