虽然这是一个老问题,但我在这里发布了一个解决方案以供参考,因为我在其他地方找不到答案。
出于某种原因,从 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