7

我正在将音频文件下载到我的 Android 应用程序的缓存中,然后必须使用 MediaPlayer 访问该文件。该文件是使用 -rw-------- 权限创建的(如 Eclipse 的文件资源管理器中所示)。

有了这些权限,MediaPlayer 就无法访问音频文件。失败在 logcat 中显示为:

java.io.IOException: Prepare failed.: status=0x1

我的应用面向 API 级别 8。

如何设置下载的音频文件的权限以使其可以被 MediaPlayer 读取?

顺便说一句,我正在创建文件:

FileOutputStream out = new FileOutputStream(fRecording);

当我尝试将文件创建为 MODE_WORLD_READABLE 时,没有创建文件:

FileOutputStream out = activity.openFileOutput(fRecording.getAbsolutePath(), Activity.MODE_WORLD_READABLE);

使用 openFileOutput 的 logcat 错误是:

java.lang.IllegalArgumentException: File /data/data/com.calltrunk.android/cache/727adda7-0ef1-490f-9853-fe13ad1e9416 contains a path separator
4

2 回答 2

4

从 API 9 开始,File对象具有setReadable方法(也setWritablesetExecutable)。它的两个 args 版本也可用于设置所有用户的读取权限(即-rw-r--r--在您的情况下):

File file = new File("path_to_your_file");
file.setReadable(true, false);
于 2015-02-10T11:47:42.673 回答
3
  • 调用openFileOutput()文件名和操作模式。这将返回 a FileOutputStreamwith permission MODE_WORLD_READABLE

  • 用 . 写入文件write()

  • 用 关闭流close()

例如:(txt文件的代码,在您的情况下,它是一个音频文件,根据它进行更改)

String FILENAME = "hello_file";
String string = "hello world!";

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE);
fos.write(string.getBytes());
fos.close();
于 2012-06-25T12:13:23.823 回答