是否可以使用content://作为WebView中<audio>元素的源

div*_*uum 13 android webview

我创建了一个ContentProvider.它导出我的assets /目录中的文件.我正在使用content:// urls来访问WebView中的导出内容.

以下HTML按预期工作:

<img src="content://<provider-name>/test.jpg">
Run Code Online (Sandbox Code Playgroud)

我正在尝试将内容提供程序用于mp3音频文件:

<div id='player'></div>
<script>
  url = "content://<provider-name>/test.mp3";
  var audio = document.createElement('audio');
  audio.src = url;
  audio.controls = "controls";
  document.getElementById("player").appendChild(audio);
</script>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息.

E/MediaPlayer(24120): Unable to to create media player
E/HTML5Audio(24120): couldn't load the resource: content://.../test.mp3 exc: java.io.IOException: setDataSource failed.: status=0x80000000
Run Code Online (Sandbox Code Playgroud)

我尝试了Android SDK 8和10但没有成功.我没有在日志中看到对ContentProvider的任何访问权限.看起来在WebView中无法访问音频标签中的内容.这看起来很奇怪,因为以下代码按预期工作:

MediaPlayer player = MediaPlayer.create(this, 
    Uri.parse("content://<provider-name>/test.mp3")
);
player.start();
Run Code Online (Sandbox Code Playgroud)

如何在WebView中播放ContentProvider中的音频文件?

Jar*_*ows 2

以下是我发现有用的一些内容:

只是为了澄清,文件路径

是否有类似于 file:///android_asset/ 的路径指向 apps 目录?

content:// - 对于已经导出的媒体sdcard/

file:///android_asset - 用于assets/文件夹中的项目

获取资产:

使用以下方式提取资产AssetManager

如何从资产文件中获取 URI?

WebView使用以下命令以编程方式从资产中放入声音MediaPlayer

网页视图中的声音

Android WebView 使用 javascript 播放音频

使用 HTML5:

Android Web 视图中的 Html 音频

这里有一些你没有尝试过的方法。最近我也一直在使用很多WebViewsJavaScript,所以也许这些其他方法之一可以解决问题。

问候,