带有 Cordova 的 Android 上文件的绝对路径参考

Posted

技术标签:

【中文标题】带有 Cordova 的 Android 上文件的绝对路径参考【英文标题】:Absolute path reference for files on Android with Cordova 【发布时间】:2019-05-04 21:54:34 【问题描述】:

我有一个使用 PhoneGap 和 Cordova 的基于 Web 的外部应用程序。在 ios 上,我可以毫无问题地引用本地文件,例如包中的图像文件。我包含 Cordova cordova-plugin-file 并在外部 Web 服务器上使用路径 cdvfile://localhost/bundle/www/img/ 引用本地图像文件比如下面的img语法:

<img src="cdvfile://localhost/bundle/www/img/news.jpg">

但是,我似乎无法使其适用于 android。我尝试了以下方法和其他类似的路径,但没有成功。

<img src="file://localhost/assets/www/img/news.jpg">
<img src="cdvfile://localhost/assets/www/img/news.jpg">
<img src="file:///localhost/assets/www/img/news.jpg">
<img src="file:///android_assets/www/img/news.jpg">

我的 config.xml 文件中的关键项目包括:

<plugin name="cordova-plugin-whitelist" source="npm"/>
<plugin name="cordova-plugin-file" source="npm"/>
<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />

在 index.html 文件中 - 我的内容安全策略是:

<meta http-equiv="Content-Security-Policy" content="default-src * gap://ready file:; style-src 'self' 'unsafe-inline'; img-src 'self' data:; script-src * 'unsafe-inline' 'unsafe-eval'">

本地系统上的 html 页面上的相对文件路径引用工作正常,但是当我转到外部网站和 WebView 应用程序时,我无法为 Android 正确引用 localhost 绝对路径。我可以在 iOS 上做到这一点,但无法在 Android 上解决。

关于如何在Android上使用绝对路径访问应用程序包中的本地文件有什么建议吗?

【问题讨论】:

【参考方案1】:

尝试使用以下格式的相对路径,

<img src="assets/www/img/news.jpg">

我在使用 locale json 时遇到了类似的问题,它的解决方法是这样的。

以这种格式再次将资产放入 www 目录中,然后尝试进行另一个干净的 Android 构建。 (去掉android目录,重新加入Cordova Android平台,重新构建)

【讨论】:

谢谢,但这对我不起作用。我不能使用相对路径,因为应用程序转换到外部 Web 服务器链接。所以现在文件的任何相对路径都在外部 Web 服务器上,并且不链接到本地​​文件。我正在寻找使用本地文件而不是网络服务器上的文件。关于如何访问本地文件的任何其他想法都会很棒。

以上是关于带有 Cordova 的 Android 上文件的绝对路径参考的主要内容,如果未能解决你的问题,请参考以下文章

尝试退出插件 webview 时,带有集成插件的 Cordova 应用程序在 webview 上崩溃(android 测试)

带有framework 7 css的cordova应用程序在各种android设备上的工作方式不同

错误:无法找到带有 Gradle 路径“:capacitor-cordova-android-plugins”的模块

Cordova Android 6.4.0 创建 res 文件夹顶层不在平台 android 内

带有多个标记的javascript googlemaps没有使用cordova应用程序在android中显示标记

Angular Material Icon 不在带有 Cordova 的 Android 应用程序中居中