简短的回答是否定的,你不能使用content://
作为音频元素的源。
您收到的错误来自HTML5Audio setDataSource
方法,如果你看看源代码 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2.2_r1/android/webkit/HTML5Audio.java#HTML5Audio.setDataSource%28java.lang.String%29, calls MediaPlayer setDataSource
与音频网址。如果你看一下文档 http://developer.android.com/reference/android/media/MediaPlayer.html#setDataSource%28java.lang.String%29为了MediaPlayer
类,它只支持文件路径和http/rtsp url。
我认为最好的选择是将音频内容保存到文件路径并使用file:
url 来访问它。
但是,如果我没记错的话,您还需要使文件可读,以便MediaPlayer
代码来访问它。这需要使用私有android.os.FileUtils
类的代码如下:
void makeFileReadable(String filename) {
try {
Class fileUtils = Class.forName("android.os.FileUtils");
Method setPermissions = fileUtils.getMethod("setPermissions", String.class,
int.class, int.class, int.class);
setPermissions.invoke(fileUtils, filename, 0775, -1, -1);
}
catch (Exception ex) {
}
}
775
相当于rwxrwxr-x
这可能比必要的更宽松,因此您可能需要尝试使用不太宽松的值进行试验。另请注意,您可能需要设置包含该文件的目录及其父目录等的权限 - 而不仅仅是文件本身。