应用程序重新启动后,cordova无法打开相机插件返回的fileURL

时间:2017-09-18 15:51:13

标签: android cordova camera cordova-plugins whitelist

我使用的是cordova版本7.0.1和cordova-plugin-camera版本2.4.1。 navigator.camera.getPicture(successFunction,failureFunction,options) 在选项中,我使用

destinationType: Camera.DestinationType.FILE_URI
sourceType: Camera.PictureSourceType.PHOTOLIBRARY

我正确获取图片URI。 我创建了一个“img”元素并将img.src设置为插件返回的URI 图片显示正确。 现在,我将此URI存储在应用程序的本地文件夹中,然后关闭该应用程序。 我重新启动应用程序,并从存储中读取imageURI。 然后,我创建一个“img”元素并将img.src设置为URI读取形式存储。

从存储中读取的URI与之前由相机插件getPicture()调用返回的URI相同。 但是,图像文件未被读取,图片不会出现在屏幕上。我看到的错误是 无法打开内容网址:

  

内容://com.android.providers.media.documents/document/image%3A3237   被白名单阻止的网址:content://com.android.providers.media.documents/document/image%3A3184

所以,我认为这是一个白名单问题。我补充道      进入config.xml文件。但这会导致应用程序在尝试读取图像文件时崩溃。

我在运行Android Marshmallow的Karbonn手机上试试这个。

如果您知道上述内容有什么问题,请分享解决方案,我还需要做些什么。

1 个答案:

答案 0 :(得分:0)

从"媒体商店"访问图像时似乎就像没有使用"某个系统应用程序"与相机一样,普通应用必须持有权限android.permission.MANAGE_DOCUMENTS才能访问该图像。

不幸的是普通应用没有此权限,正如answer所述。因此,必须使用"系统应用程序"将图库图像移动/复制到app文件夹(file:///storage/emulated/0/Android/data/APP_NAMESPACE)中。保留android.permission.MANAGE_DOCUMENTS - 权限,以便普通应用程序可以在重新启动后显示此图像。