使用 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>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</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 问题。
我需要访问面向 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>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</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 问题。