2012-06-25 15 views
7

Estoy descargando un archivo de audio en la memoria caché de mi aplicación Android a la que se debe acceder con MediaPlayer. El archivo se crea con permisos de -rw ------- (como se ve en el Explorador de Archivos de Eclipse).Cómo configuro el permiso de archivo en MODE_WORLD_READABLE

Con estos permisos, MediaPlayer no puede acceder al archivo de audio. El no se muestra en Logcat como:

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

Mi aplicación nivel de objetivos API 8.

¿Cómo se configuran los permisos del archivo de audio descargado para que sea legible por el MediaPlayer?

Por cierto, estoy creando el archivo con:

FileOutputStream out = new FileOutputStream(fRecording); 

Cuando intento crear el archivo como MODE_WORLD_READABLE, se crea ningún archivo:

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

El error Logcat usando openFileOutput es :

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

Cuando cambio la línea de "FileOutputStream a cabo = activity.openFileOutput (fRecording, Actividad .MODE_WORLD_READABLE); " Estoy viendo un mensaje de error en Eclipse de "El método openFileOutput (String, int) en el tipo ContextWrapper no es aplicable para los argumentos (Archivo, int)" –

+0

Debe ser, FileOutputStream out = activity.openFileOutput ("

+0

El archivo se crea con los permisos correctos, pero parece que se mueve "automáticamente" de la memoria caché a los archivos dentro de mi aplicación. Comenzaré una nueva pregunta. –

Respuesta

3
  • Llame al openFileOutput() con el nombre del archivo y el modo operativo . Esto devuelve un FileOutputStream con permiso MODE_WORLD_READABLE.

  • Escriba en el archivo con write().

  • Cierre la secuencia con close().

Por ejemplo: (Código para el archivo txt, en su caso es un archivo de audio realizar cambios de acuerdo con ella)

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

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

Si quiere pasar el archivo, también necesita el nombre del archivo. Que obtienes con 'getFileStreamPath (FILENAME);' – Martin

2

A partir de API 9 File objeto tiene setReadable método (también setWritable y setExecutable). Se trata de dos argumentos versión se puede utilizar para establecer el permiso de lectura para todos los usuarios, así (es decir, se convierte en -rw-r--r-- en su caso):

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