2011-05-20 19 views
6

Si creo un archivo temporal en el directorio de caché de mi aplicación, no puedo, por ejemplo, enviarlo por correo electrónico como un archivo adjunto. Esto se debe a que la otra aplicación no tiene permiso para leer el archivo.Compartir archivos temporales entre aplicaciones sin tarjeta SD

En la API 9 en adelante, puedo establecer que el archivo sea legible en todo el mundo con setReadable (verdadero, falso). desafortunadamente, apuntar al nivel de API 7+. No deseo confiar en la presencia de una tarjeta SD, así que no puedo usar la ubicación devuelta por getExternalStorageDir() para almacenarla en caso de que no haya ninguna tarjeta presente.

¿Cómo puedo generar y compartir un archivo temporal de una manera que funcione, incluso sin tarjeta SD presente?

Respuesta

8
final String FILENAME = "file.tmp"; 
final String someData = "File data"; 

FileOutputStream fos = openFileOutput(FILENAME, 
             Context.MODE_WORLD_WRITEABLE | 
             Context.MODE_WORLD_READABLE); 
fos.write(someData.getBytes()); 
fos.close(); 

http://developer.android.com/reference/android/content/Context.html#openFileOutput(java.lang.String,%20int)

+0

Así como una nota, el directorio de este archivo se almacena en el que es devuelto por getFilesDir(), * no * getCacheDir(). Funciona como un encanto. ¡Gracias! –

+2

Parece que Context.MODE_WORLD_WRITEABLE está en desuso a partir del SDK 17 (http://developer.android.com/reference/android/content/Context.html#MODE_WORLD_READABLE) ¿Cuál es la solución recomendada ahora? – alextk

+1

@alex probablemente Intent.FLAG_GRANT_READ_URI_PERMISSION mientras crea intenciones. – soulseekah

Cuestiones relacionadas