簡體   English   中英

為什么我不能在Android應用中使用Cordova 2.7.0觸發navigator.camera.getPicture?

[英]Why can't I trigger navigator.camera.getPicture using Cordova 2.7.0 in my Android app?

我正在使用適用於Android的Cordova應用程序,該應用程序必須從設備上傳圖像。 測試是在裝有Android 4.0.4的Motorola Xoom Tablet上進行的。
Cordova版本為2.7.0。

該應用程序將打開,並正確調用ondeviceready。

用戶按下按鈕,將觸發以下功能:

capture: function(sourceType) {
  navigator.camera.getPicture(this.onCaptureSuccess, this.onCaptureFail, {
    quality: 20
    ,targetWidth: 100
    ,targetHeight: 100
    ,destinationType: Camera.DestinationType.FILE_URI 
    ,sourceType: Camera.PictureSourceType.PHOTOLIBRARY
    ,correctOrientation: false
  });
}

觸發功能后,將顯示一個帶有4個選項的菜單,用於選擇文件源(ASTRO文件管理器,ES文件資源管理器,文件和庫),並且以下消息添加到Logcat:

05-11 13:30:51.400: D/DroidGap(11102): Paused the application!
05-11 13:30:51.400: D/CordovaWebView(11102): Handle the pause

我可以選擇四個,LogCat會顯示以下消息:

05-11 13:33:57.960: D/DroidGap(11409): onDestroy()
05-11 13:33:57.960: D/CordovaWebView(11409): >>> loadUrl(javascript:try{cordova.require('cordova/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};)
05-11 13:33:57.960: D/PluginManager(11409): init()
05-11 13:33:57.970: D/CordovaWebView(11409): >>> loadUrlNow()
05-11 13:33:58.120: D/OpenGLRenderer(11409): Flushing caches (mode 0)
05-11 13:33:58.350: D/OpenGLRenderer(11409): Flushing caches (mode 1)

選擇要上傳的應用程序的圖像后,將顯示一條消息“不幸的是,該過程已停止。” 並顯示以下LogCat消息:

05-11 13:40:06.750: D/DroidGap(11886): DroidGap.onCreate()
05-11 13:40:06.770: D/CordovaWebView(11886): CordovaWebView is running on device made by: Motorola
05-11 13:40:06.770: D/JsMessageQueue(11886): Set native->JS mode to 2
05-11 13:40:06.770: D/DroidGap(11886): DroidGap.init()
05-11 13:40:06.770: D/CordovaWebView(11886): >>> loadUrl(file:///android_asset/www/index.html)
05-11 13:40:06.770: D/PluginManager(11886): init()
05-11 13:40:06.780: D/CordovaWebView(11886): >>> loadUrlNow()
05-11 13:40:06.780: D/DroidGap(11886): Incoming Result
05-11 13:40:06.780: D/DroidGap(11886): Request code = 18
05-11 13:40:06.780: D/DroidGap(11886): We have a callback to send this result to
05-11 13:40:06.780: D/AndroidRuntime(11886): Shutting down VM
05-11 13:40:06.780: W/dalvikvm(11886): threadid=1: thread exiting with uncaught exception (group=0x40a2f1f8)
05-11 13:40:06.800: E/AndroidRuntime(11886): FATAL EXCEPTION: main
05-11 13:40:06.800: E/AndroidRuntime(11886): java.lang.RuntimeException: Unable to resume activity {com.ubihealth/com.ubihealth.UbiHealth}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=18, result=-1, data=Intent { dat=content://media/external/images/media/7468 }} to activity {com.ubihealth/com.ubihealth.UbiHealth}: java.lang.NullPointerException
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2466)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2494)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2008)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1169)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.os.Looper.loop(Looper.java:137)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.main(ActivityThread.java:4446)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at java.lang.reflect.Method.invokeNative(Native Method)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at java.lang.reflect.Method.invoke(Method.java:511)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at dalvik.system.NativeStart.main(Native Method)
05-11 13:40:06.800: E/AndroidRuntime(11886): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=18, result=-1, data=Intent { dat=content://media/external/images/media/7468 }} to activity {com.ubihealth/com.ubihealth.UbiHealth}: java.lang.NullPointerException
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3002)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2453)
05-11 13:40:06.800: E/AndroidRuntime(11886):    ... 12 more
05-11 13:40:06.800: E/AndroidRuntime(11886): Caused by: java.lang.NullPointerException
05-11 13:40:06.800: E/AndroidRuntime(11886):    at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:858)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.Activity.dispatchActivityResult(Activity.java:4649)
05-11 13:40:06.800: E/AndroidRuntime(11886):    at android.app.ActivityThread.deliverResults(ActivityThread.java:2998)
05-11 13:40:06.800: E/AndroidRuntime(11886):    ... 13 more
05-11 13:40:07.040: D/chromium(11886): Unknown chromium error: -6
05-11 13:40:07.070: D/CordovaNetworkManager(11886): Connection Type: none

對我的錯誤有任何想法嗎?

更新 :我已經更新了我在Cordova 2.6.0中擁有的項目,並嘗試了上面的代碼,但它不起作用。 現在,我使用Cordova 2.7.0創建了一個新項目,並剛剛從舊項目中復制了Cordova代碼,並且效果很好。

我在一些設備上使用Cordova 2.7測試了此代碼,結果如下:

Nexus 7 (4.2)                     no problems
HTC Sensation (2.3.4)             no problems
HTC Evo 4g (2.2)                  no problems
Samsung Galaxy Tab 7.0 (4.0.4)    Had the below Java error but JS seems to get the image

(4.0.2-05-15 15:16:53.895:E / ActivityThread(3520):活動com.android.internal.app.ChooserActivity泄露了最初注冊的IntentReceiver com.android.internal.app.ResolverActivity$1@4131a248在這里,您是否缺少對unregisterReceiver()的調用?

我的同事午飯回來后,將在Xoom平板電腦上進行測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM