我正在将音频文件下载到我的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
答案 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
方法(也是setWritable
和setExecutable
)。它的两个args版本也可用于为所有用户设置读取权限(即在您的情况下它变为-rw-r--r--
):
File file = new File("path_to_your_file");
file.setReadable(true, false);