studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java android sd-card

java - programacion - getExternalStorageDirectory no funciona



manual de programacion android pdf (7)

¿Por supuesto? ¿Dónde crees que está montada tu tarjeta SD? Intente hacer ls -l en ese directorio; probablemente sea un enlace simbólico a /storage/emulated/0/ .

Estoy intentando guardar un archivo en mi tarjeta SD en mi Samsung Galaxy Nexus con 4.2.2. Desde mi aplicación estoy usando

Environment.getExternalStorageDirectory()

Pero vuelve

/storage/emulated/0/

Que no es donde se encuentra la información de mi tarjeta SD. ¿Hay algún método de trabajo que pueda usar para obtener la ruta correcta a mi tarjeta SD?


Acabo de descubrir que esta es la forma en que Jelly Bean lidia con la falta de permiso de android.permission.WRITE_EXTERNAL_STORAGE . No he visto semejante comportamiento con versiones anteriores de Android.

Solo agrega esta línea a tu AndroidManifest.xml:

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


Creo que es debido al uso del emulador genymotion, la ruta es verdadera y en Eclipse se ubica en

File Explorer - > mnt - > shell - > emulated -> 0

Espero eso ayude ;)


De alguna manera había perdido mi enlace simbólico en / storage / emulated / 0, causando un fallo similar. Lo que hice fue usar la aplicación de la cámara para tomar una foto. Observé que los detalles de las imágenes decían que estaba dentro de / storage / emulated / 0, aunque ese directorio no existía desde el explorador de archivos. Luego reinicié el teléfono. Después de reiniciar el enlace ya existía.


En realidad, esa es la ubicación correcta.

A partir de Android 4.2, Google introdujo varias cuentas de usuario. Cada usuario tiene su propio almacenamiento externo, que tiene la ID de usuario en la ruta para mantener la singularidad.

El ID de usuario primario (predeterminado) es 0. Por lo tanto, obtiene /storage/emulated/0/ como la ruta al almacenamiento externo.



Environment.getExternalStorageDirectory() refiere a cualquier cosa que el fabricante del dispositivo considere como "almacenamiento externo". Puedo ser otra cosa que la tarjeta SD.

Puede obtener más información aquí: Encuentre una ubicación de tarjeta SD externa