2012-06-25 34 views
7

Tôi đang tải xuống tệp âm thanh vào bộ nhớ cache của ứng dụng Android của mình, sau đó phải được truy cập bằng MediaPlayer. Tệp được tạo với quyền của -rw ------- (như đã thấy trong Trình khám phá tệp của Eclipse).Làm cách nào để đặt quyền tệp cho MODE_WORLD_READABLE

Với các quyền này, MediaPlayer không thể truy cập tệp âm thanh. Không được trình bày trong logcat như:

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

Ứng dụng của tôi mức mục tiêu API 8.

Làm thế nào để thiết lập quyền âm thanh tập tin đã tải về để làm cho nó có thể đọc được bởi các MediaPlayer?

Bằng cách này, tôi đang tạo ra các tập tin với:

FileOutputStream out = new FileOutputStream(fRecording); 

Khi tôi cố gắng tạo ra các tập tin như MODE_WORLD_READABLE, không có tập tin được tạo ra:

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

Các lỗi logcat sử dụng openFileOutput là :

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

Khi tôi thay đổi dòng để "FileOutputStream ra = activity.openFileOutput (fRecording, Hoạt động .MODE_WORLD_READABLE); " Tôi thấy một thông báo lỗi trong Eclipse của "Phương thức openFileOutput (String, int) trong loại ContextWrapper không áp dụng cho các đối số (File, int)" –

+0

Nó phải là, FileOutputStream out = activity.openFileOutput ("

+0

Tệp được tạo bằng các quyền chính xác nhưng có vẻ như được di chuyển "tự động" từ bộ nhớ cache đến tệp trong ứng dụng của tôi. Tôi sẽ bắt đầu một câu hỏi mới. –

Trả lời

3
  • Gọi openFileOutput() bằng tên của tệp và chế độ hoạt động . Điều này trả về một số FileOutputStream với sự cho phép MODE_WORLD_READABLE.

  • Viết vào tệp bằng write().

  • Đóng luồng bằng close().

Ví dụ: (Mã số cho file txt, trong trường hợp của bạn một tập tin âm thanh của nó thay đổi theo nó)

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

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_WORLD_READABLE); 
fos.write(string.getBytes()); 
fos.close(); 
+0

Nếu bạn muốn truyền tệp, bạn cũng cần có tên tệp. Mà bạn nhận được với 'getFileStreamPath (FILENAME);' – Martin

2

Bắt đầu với API 9 File đối tượng có setReadable phương pháp (hay còn setWritablesetExecutable). Đó là hai args phiên bản có thể được sử dụng để thiết lập cho phép đọc cho tất cả người dùng cũng như (tức là nó trở nên -rw-r--r-- trong trường hợp của bạn):

File file = new File("path_to_your_file"); 
file.setReadable(true, false); 
Các vấn đề liên quan