使用 Cordova 访问 Android 上的媒体文件的最简单方法

Simplest way to access media files on Android using Cordova

我需要访问面向 Android 的 Cordova 应用程序中的文件。我需要能够通过传递 URI(例如“file://...”或“https://...”)来做到这一点,因为这是我需要传递 API 的格式打开文件(Howler.js 播放 .mp3 文件)。

据我了解,这似乎排除了cordova-plugin-file。我已经尝试过本地和远程托管。我试过安装 cordova-plugin-whitelist。我的 config.xml 包含

<access origin="*"/> <allow-navigation href="*"/> 和我的 html 包含 <meta http-equiv="Content-Security-Policy" content="default-src *; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data:"/>.

因此,我涵盖了所有文档中提到的尽可能多的基础,但没有任何乐趣 - 访问文件的权限总是被拒绝。非常感谢建议。

编辑 ------------------

为了回应下面的 Eric,我尝试编辑我的 config.xml,现在如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="io.cordova.hellocordova" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>HelloCordova</name>
  <description>&#xD;
        A sample Apache Cordova application that responds to the deviceready event.&#xD;
    </description>
  <author email="dev@cordova.apache.org" href="http://cordova.io">&#xD;
        Apache Cordova Team&#xD;
    </author>
  <content src="index.html"/>
  <access origin="*"/>
  <allow-intent href="http://*/*"/>
  <allow-intent href="https://*/*"/>
  <allow-intent href="tel:*"/>
  <allow-intent href="sms:*"/>
  <allow-intent href="mailto:*"/>
  <allow-intent href="geo:*"/>
  <platform name="android">
    <allow-intent href="market:*"/>
    <access origin="*"/>
    <preference name="AndroidInsecureFileModeEnabled" value="true" />
  </platform>
  <platform name="ios">
    <allow-intent href="itms:*"/>
    <allow-intent href="itms-apps:*"/>
  </platform>
  <!-- <hook src="node_modules/cordova-import-npm/scripts/importNpmPackages.js" type="before_prepare"/> -->
</widget>

但是我的构建现在崩溃并显示一条错误消息here

您可以尝试添加

<preference name="AndroidInsecureFileModeEnabled" value="true" />

您的 config.xml,很可能是 CORS 问题。