2011-03-26 14 views
6

que estoy tratando de guardar los datos en la tarjeta SD, de acuerdo con la guía here que debería usar getExternalFilesDir() (API nivel 8), realmente me gustaría hacerlo pero llamar
File directory = context.getExternalFilesDir(null); sigue volviendo null, estoy usando mi actividad principal como contexto.
Luego he intentado volver a utilizar File dir = Environment.getExternalStorageDirectory();, devuelve correctamente la raíz SD, pero al parecer no soy capaz de crear el "/ Android/data/package_name/archivos /" directorio sugerido:Android problemas externos de almacenamiento de datos

File root = Environment.getExternalStorageDirectory(); 
    File dir = new File(root, GlobalConstants.EXTERNAL_SAVE_DIR); 
    boolean canCreate = dir.mkdirs(); 

En este código canCreate es falso (EXTERNAL_SAVE_DIR es obviamente/Android/data/package_name/files /).

¿Hay algo que me falta, tal vez debería pedir permisos sobre el Manifiesto (no encontré nada)? He leído getExternalFilesDir() tiene un error donde los contenidos se eliminan en la actualización de la aplicación, realmente no me importa y prefiero usarlo en lugar del otro ya que estoy tratando de cumplir con API 8 y me gusta la idea de manejar el nombre del directorio para mí.

¿Alguna idea?

Respuesta

21

es necesario agregar lo siguiente a su manifiesta:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 

lo contrario, no se permite escribir en la tarjeta SD. Si está utilizando Eclipse, puede usar la pestaña de permisos del editor de manifiestos, agréguela.

+0

¡Maldición, no sé cómo me lo perdí, y lo verifiqué! – capitano666

+0

También vale la pena mencionar que los archivos no se crean automáticamente al escribir, pero hay que usar 'file.createNewFile()' – capitano666

+9

No entiendo por qué la documentación no menciona este permiso en la sección Almacenamiento de datos. +1 resolvió mi problema. – Emerald214

Cuestiones relacionadas