Cordova相机插件,从图库[ANDROID]获取完整的图像路径

时间:2015-07-10 10:45:16

标签: android cordova plugins camera gallery

我正在尝试使用cordova相机插件从图库中获取图像,这就是我这样做的方式:

navigator.camera.getPicture(onSuccess, onFail, {
  quality: 50,
  sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM,
  destinationType: Camera.DestinationType.FILE_URI,
  mediaType: Camera.MediaType.ALLMEDIA,
  encodingType: Camera.EncodingType.JPEG
});

但是在我的成功' function我以格式获取图片URI:

"content://com.android.providers.media.documents/document/image%3A1509"

我希望URI具有图像的完整路径,就像我在使用相机时获取它一样:

"file:///storage/emulated/0/Pictures/IMG_20150710_124222.jpg"

阅读我看到的官方文档,我应该做的唯一事情是设置属性' DestinationType'到了' FILE_URI',已经设置好,如上所示。

我做错了什么?

3 个答案:

答案 0 :(得分:8)

我找到了一个插件,用于转换内容中的URI://...'格式化为完整的文件路径,它不是完美的解决方案,但它是我的工作,插件是cordova-plugin-filepath,我在getCamera函数的onSuccess回调中使用它:

function onSuccess(imageURI) {
  window.FilePath.resolveNativePath(imageURI, function(result) {
    // onSuccess code
    imageURI = 'file://' + result;
    . . .
  }, function (error) {
    // onError code here
  }
}

答案 1 :(得分:1)

您也可以在确认框

的帮助下使用单个按钮执行此操作
var txt=confirm("Select photo source");
if(txt==true){
         navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.CAMERA});
}
else{
    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,destinationType: Camera.DestinationType.DATA_URL,saveToPhotoAlbum: true,sourceType: Camera.PictureSourceType.PHOTOLIBRARY});
}

如果没问题,则打开相机 否则,如果单击取消,则打开galery

您还可以根据需要自定义确认按钮的确定取消按钮。

答案 2 :(得分:0)

我猜你的代码中的问题就在这里

mediaType: Camera.MediaType.ALLMEDIA,

删除此行或将其删除

 mediaType: Camera.MediaType.PICTURE,

快乐的编码....