使用PhoneGap Camera Plugin从Android 4.4(KitKat)上的库中选择时无法加载图像

Cra*_*rUK 33 phonegap-plugins cordova

我正在尝试根据使用PhoneGap/Cordova Camera Plugin从设备图库中选择的图像在我的应用中设置img标记的来源.

它以前在旧版本的Android(3.3)上工作,并且可以在iOS上正常工作,但现在无法解析4.4(KitKat)上的图像路径.

返回的图像URL的返回路径如下所示:

content://com.android.providers.media.documents/document/image%3A352
Run Code Online (Sandbox Code Playgroud)

当我使用此路径通过JavaScript设置为图像src时,无法解析URL,从而产生加载错误.使用相机拍照时没有问题,只有在从画廊中选择现有照片时才会出现这种情况.

我已尝试编码到base64并尝试了文档中提到的方法,resolveLocalFileSystemURI();但我没有运气这些.我也试过删除相机插件并重建应用程序,但没有快乐.

我的猜测是KitKat处理图库的方式发生了变化,PhoneGap/Camera插件尚未更新以适应这种情况.

小智 19

在修复此错误时,一种非常脏的解决方法适用于我.在极端必要的情况下使用:)

if (imageURI.substring(0,21)=="content://com.android") {
  photo_split=imageURI.split("%3A");
  imageURI="content://media/external/images/media/"+photo_split[1];
}
Run Code Online (Sandbox Code Playgroud)

  • @christianmenkens你想出更强大的东西吗?如果你发布它我想用它.否则我认为每个人都在等待在cordova 3.5.0中提供的修复程序 (3认同)
  • 对于它的价值,在Cordova 5.3.3中我仍然存在这个bug,这个解决方法仍然可以修复它. (3认同)
  • 我喜欢这个.."content://com.android"在每种情况下都不起作用,因为当我使用ES文件资源管理器时,我得到一个"内容://com.esstrong ..."...所以需要更多的逻辑内置,但重新创建旧样式URL的整体解决方案适用于从Android 4.0到4.4的应用程序. (2认同)

MBi*_*lau 16

Android 4.4中出现了一些带有图像URI编码的东西.

这里针对Cordova提出了一个错误:https://issues.apache.org/jira/browse/CB-5398

在文档的Getpicture中,下了Android尽皆部分,讨论这一问题,并指向的StackOverflow问题与解决方法(编辑相机插件,Java代码,迫使它打开图片库应用程式,而不是存储访问架构的应用程序.)

您可以做的另一件事是将目标类型设置为DATA_URL.