如何设置MODE_WORLD_READABLE的文件权限

时间:2012-06-25 12:08:06

标签: android media-player

我正在将音频文件下载到我的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

2 个答案:

答案 0 :(得分:3)

  • 使用文件名和操作名称调用openFileOutput() 模式。这将返回FileOutputStream的权限 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();

答案 1 :(得分:2)

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

File file = new File("path_to_your_file");
file.setReadable(true, false);