cordova-plugin-camera无法检索文件

时间:2016-03-04 00:33:46

标签: android cordova ionic-framework cordova-plugins ngcordova

因此,每次调用getPicture时,cordova-plugin-camera都会失败,异常为“Error retrieval image”。我挖了一下,似乎我不是唯一有这个问题的人,甚至有一个pull request,我认为可能是相关的。我尝试将pull请求硬编码到插件中,但它仍然无效,错误更改为修改图像时出错。这是堆栈跟踪:

E/Vold    ( 2319): Failed to find mounted volume for /storage/extSdCard/Android/data/com.sec.android.gallery3d/cache/
W/Vold    ( 2319): Returning OperationFailed - no handler for errno 0
W/ContextImpl(13028): Failed to ensure directory: /storage/extSdCard/Android/data/com.sec.android.gallery3d/cache
I/Gallery_Performance(13028): Gallery onDestroy End
D/MapViewPage(13028): onDetachedFromWindow():
D/MultiPhoneWindow(13028): performUpdateVisibility : visible :false
E/ActivityThread(13028): Activity com.sec.android.gallery3d.app.Gallery has leaked IntentReceiver com.sec.android.gallery3d.app.GalleryCoverMode$2@1090fb5b that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread(13028): android.app.IntentReceiverLeaked: Activity com.sec.android.gallery3d.app.Gallery has leaked IntentReceiver com.sec.android.gallery3d.app.GalleryCoverMode$2@1090fb5b that was originally registered here. Are you missing a call to unregisterReceiver()?
E/ActivityThread(13028):        at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:960)
E/ActivityThread(13028):        at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:761)
E/ActivityThread(13028):        at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:2002)
E/ActivityThread(13028):        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1982)
E/ActivityThread(13028):        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1976)
E/ActivityThread(13028):        at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:503)
E/ActivityThread(13028):        at com.sec.android.gallery3d.app.GalleryCoverMode.registerReceiverGlobal(GalleryCoverMode.java:265)
E/ActivityThread(13028):        at com.sec.android.gallery3d.app.GalleryCoverMode.setCoverMode(GalleryCoverMode.java:72)
E/ActivityThread(13028):        at com.sec.android.gallery3d.app.GalleryCoverMode.<init>(GalleryCoverMode.java:68)
E/ActivityThread(13028):        at com.sec.android.gallery3d.app.Gallery.initialize(Gallery.java:351)
E/ActivityThread(13028):        at com.sec.android.gallery3d.app.Gallery$6.handleMessage(Gallery.java:1378)
E/ActivityThread(13028):        at android.os.Handler.dispatchMessage(Handler.java:102)
E/ActivityThread(13028):        at android.os.Looper.loop(Looper.java:145)
E/ActivityThread(13028):        at android.app.ActivityThread.main(ActivityThread.java:5942)
E/ActivityThread(13028):        at java.lang.reflect.Method.invoke(Native Method)
E/ActivityThread(13028):        at java.lang.reflect.Method.invoke(Method.java:372)
E/ActivityThread(13028):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
E/ActivityThread(13028):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
E/Vold    ( 2319): Failed to find mounted volume for /storage/extSdCard/Android/data/com.appName.app/cache/
W/Vold    ( 2319): Returning OperationFailed - no handler for errno 0
W/ContextImpl( 9583): Failed to ensure directory: /storage/extSdCard/Android/data/com.appName.app/cache
W/System.err( 9583): java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.appName.app/cache: open failed: EISDIR (Is a directory)
W/System.err( 9583):    at libcore.io.IoBridge.open(IoBridge.java:456)
W/System.err( 9583):    at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
W/System.err( 9583):    at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
W/System.err( 9583):    at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
W/System.err( 9583):    at org.apache.cordova.camera.CameraLauncher.ouputModifiedBitmap(CameraLauncher.java:576)
W/System.err( 9583):    at org.apache.cordova.camera.CameraLauncher.processResultFromGallery(CameraLauncher.java:684)
W/System.err( 9583):    at org.apache.cordova.camera.CameraLauncher.access$000(CameraLauncher.java:66)
W/System.err( 9583):    at org.apache.cordova.camera.CameraLauncher$1.run(CameraLauncher.java:787)
W/System.err( 9583):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err( 9583):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err( 9583):    at java.lang.Thread.run(Thread.java:818)
W/System.err( 9583): Caused by: android.system.ErrnoException: open failed: EISDIR (Is a directory)
W/System.err( 9583):    at libcore.io.Posix.open(Native Method)
W/System.err( 9583):    at libcore.io.BlockGuardOs.open(BlockGuardOs.java:186)
W/System.err( 9583):    at libcore.io.IoBridge.open(IoBridge.java:442)
W/System.err( 9583):    ... 10 more
I/chromium( 9583): [INFO:CONSOLE(123)] "Failed because: Error modifying image.", source: file:///android_asset/www/js/directives/cameraHandler.js (123)

导致此问题的代码:

var opts = {
  quality: 50,
  destinationType: Camera.DestinationType.FILE_URI,
  sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM,
  correctOrientation: true,
  targetWidth: 680,
  targetHeight: 480
};
navigator.camera.getPicture(function(res) {
  console.log('Success');
}, function(error) {
  console.log('Failed because: ' + error);
}, opts);

我对android开发不太熟悉,但似乎它试图将目录作为文件读取。任何想法如何解决它?

0 个答案:

没有答案