1

我正在使用打包的网络,当我尝试使用音频标签时遇到问题。

在我的代码中,我有一个来自内容提供商的 WebView:

wv.loadUrl("content://content_provider/web_page");

在内容提供者中,我重写了“openAssetFile”方法,以便为 WebView 提供所需的文件。但是当我使用标签时,程序从不要求文件。

我还尝试使用“loadDataWithBaseURL”方法插入 html 代码,其中我使用“content://”自定义协议对路径进行硬编码,但它不起作用。

这很奇怪,因为当我使用视频标签时,它可以正常请求文件。任何其他内容也可以正常工作。

4

1 回答 1

0

虽然这是一个老问题,但我在这里发布了一个解决方案以供参考,因为我在其他地方找不到答案。

出于某种原因,从 webView(使用 MediaPlayer)对 mp3 文件的内容提供程序调用不会调用 openAssetFile,而是调用 openFile。(不确定提供商是否处理此路由)。这个问题似乎已在 4.2+ 中修复

对我有用的旧版本的解决方案是在您的内容提供者中覆盖 openFile :

@Override
public AssetFileDescriptor openAssetFile(Uri uri, String mode){
    //your asset reading code that works for other file types here.
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode){
    try {
        AssetFileDescriptor afd = openAssetFile(uri, mode);
        return afd.getParcelFileDescriptor();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

这适用于 Android 4.04 和 4.1

于 2013-09-17T10:36:04.947 回答