当前位置: 首页 > 知识库问答 >
问题:

使用PhoneGap相机插件从Android 4.4(KitKat)的图库中选择时无法加载图像

厉令
2023-03-14

我正在尝试根据使用PhoneGap/Cordova相机插件从设备图片库中选择的图像在我的应用程序中设置img标签的源。

它以前在旧版本的Android(3.3)上按预期工作,在iOS上工作正常,但现在无法在4.4(KitKat)上解析图像路径。

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

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

当我使用这个路径通过JavaScript设置为图像src时,URL不能被解析,因此产生一个加载错误。用相机拍照时没有问题,似乎只有在从图库中选择现有图片时才会出现这种情况。

我尝试过编码到base64,也尝试了文档resolveLocalFileSystemURI()中提到的方法;但是我没有运气。我还尝试删除相机插件并重建应用程序,但没有喜悦。

我的猜测是,KitKat处理图库的方式发生了一些变化,PhoneGap/Camera插件尚未更新以适应这一点。

共有3个答案

陆弘新
2023-03-14

Adobe向我保证,这个问题将在3.5.0中得到修复。它在3.4中没有修复。由于3.5.0计划在5月中旬发布,我只打算等到那时。

Adobe声称这不是插件级别的更改。这是cordova代码的基本更改。他们花了这么长时间才想出这个修复程序真是太糟糕了。

更新:Cordova 3.5.0于5月9日发布。你可以下载它的bia节点,看看问题是否真的解决了。

范宏大
2023-03-14

Android 4.4中出现了一些图像URI编码的问题。

这里有一个针对科尔多瓦的错误:https://issues.apache.org/jira/browse/CB-5398

在getPicture的文档中,在Android Quicks部分下,它讨论了这个问题,并指出一个StackOverflow问题和一个解决方法(编辑相机插件java代码,以强制它打开Gallery应用程序,而不是Storage Access Framework应用程序。)

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

尉迟哲瀚
2023-03-14

当这个bug被修复时,一种非常肮脏的解决方法对我有效。在极端必要的情况下使用:)

if (imageURI.substring(0,21)=="content://com.android") {
  photo_split=imageURI.split("%3A");
  imageURI="content://media/external/images/media/"+photo_split[1];
}
 类似资料:
  • 编辑:我调试了应用程序,并用初始化了。这消除了错误,但是现在ImageView没有得到更新,但是当我从Gallery中选择image时,它已经更新了。

  • 我正在尝试使用最新版本的PhoneGap开发PhoneGap应用程序。在我的应用程序中包含一个允许用户更改个人资料图像的页面。我正试图用html标准的fileupload元素来实现这一点。但问题是,它确实适用于某些android手机,但有些手机根本不起作用。一开始我考虑的是Android版本,但有一种情况是它在三星Galaxy tab 10.1和Android 4.1.2上工作,但在另一个相同版本

  • 我必须做一个按钮,将提供从画廊或从相机选择图像。 结果是有效的。如果我从图库中选择,图像查看器将查看它,如果我选择从相机拍照,它也有效。问题是,在我的show FileChooser()方法中,我所有的意图都在同时运行,所以当我从图库中选择时,相机仍然运行。我选择相机,图库也在打开。我认为我应该在切换案例模式下实现我的代码,但我不明白如何做到这一点。请帮助解决我的初学者问题。

  • 有没有一个标准的方法来调用对话框选择从相机或从图库(如内置电话簿或Skype)的图像? 我看了一下这个,但是代码打开了图库,没有建议从相机中选择它。 设备:Samsung Galaxy Tab Android:2.3.3

  • 我正在从画廊或相机加载图像,以便我可以编辑它。我已经使用EXIFInterface来管理位图的旋转。但在三星s8[Android 9]中,它为图像提供了90度旋转但图像原本是不旋转的。根据这个旋转,我把它旋转了90度,这是我不想要的。 我尝试过使用ContentResolver通过光标进行旋转,但它也有与EXIFInterface相同的问题。以下是我尝试解决问题的两种方法:

  • 在我的phonegap应用程序(android版本4.4.2)中,我需要选择图像形式sdcard。在这种情况下,我无法读取图像大小和名称。我的代码就像。 在我的Android设备(v 4.4.2)专辑中显示“最近”,“驱动器”,“图像”,“图库”,...当从图库中选择图像时,只有图像大小是得到的。除了图库图像大小是无法得到.. 参考了这个,但没有获得成功 Cordova/PhoneGap照片文件大