¿Cómo puedo usar Environment.getExternalStorageDirectory()
para leer una imagen almacenada de la tarjeta SD o hay una mejor manera de hacerlo?Android cómo usar Environment.getExternalStorageDirectory()
Respuesta
Environment.getExternalStorageDirectory().getAbsolutePath()
Le da la ruta completa de la tarjeta SD. A continuación, puede realizar operaciones normales de E/S de archivos utilizando Java estándar.
Aquí está un ejemplo sencillo para escribir un archivo:
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";
// Not sure if the/is on the path or not
File f = new File(baseDir + File.separator + fileName);
f.write(...);
f.flush();
f.close();
Editar:
Vaya - que quería un ejemplo para la lectura ...
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myFile.txt";
// Not sure if the/is on the path or not
File f = new File(baseDir + File.Separator + fileName);
FileInputStream fiStream = new FileInputStream(f);
byte[] bytes;
// You might not get the whole file, lookup File I/O examples for Java
fiStream.read(bytes);
fiStream.close();
Tener en cuenta sin embargo, que getExternalStorageDirectory() no va a funcionar correctamente en algunos teléfonos, por ejemplo mi Motorola razr maxx, ya que tiene 2 tarjetas/mnt/sdcard y/mnt/sdcard-ext - para tarjetas SD internas y externas respetuosamente. Recibirá la respuesta/mnt/sdcard solo cada vez. Google debe proporcionar una forma de lidiar con dicha situación. Como hace que muchas aplicaciones sensibles a la tarjeta SD (es decir, la copia de seguridad de la tarjeta) fallen miserablemente en estos teléfonos.
Lo mismo aquí con Galaxy Tab 2 GT-P3110 ... Me preguntaba por qué mi base de datos no se copió en la tarjeta SD y me acabo de dar cuenta de que hay 2 tarjetas como usted dijo ... ¡cómo perder horas de depuración para nada! – Mirko
Es posible que un dispositivo que use una partición del almacenamiento interno para el almacenamiento externo también pueda ofrecer una ranura para tarjeta SD. En este caso, la tarjeta SD no forma parte del almacenamiento externo y su aplicación no puede acceder a ella (el almacenamiento adicional está destinado solo a los medios proporcionados por el usuario que escanea el sistema). –
@Tim Aquí estoy enfrentando un problema como este. En Nexus 5 solo tiene almacenamiento incorporado y Micromax a114 canvas 2.2 tiene capacidad de almacenamiento ampliable. Mi problema es que cuando intento descargar algunos archivos de mi aplicación no se descargan. Y el Medio Ambiente.MEDIA_MOUNTED lo que significa? –
Como se describe en la documentación Environment.getExternalStorageDirectory():
Environment.getExternalStorageDirectory() retorno primario directorio compartido de almacenamiento externo /.
Este es un ejemplo de cómo utilizar la lectura de una imagen:
String fileName = "stored_image.jpg";
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String pathDir = baseDir + "/Android/data/com.mypackage.myapplication/";
File f = new File(pathDir + File.separator + fileName);
if(f.exists()){
Log.d("Application", "The file " + file.getName() + " exists!";
}else{
Log.d("Application", "The file no longer exists!";
}
Como mencionó, con' getExternalStorageDirectory() 'podemos crear un nuevo directorio en el almacenamiento preferido por el usuario (que generalmente es la memoria interna). Entonces, ¿qué sucede si el almacenamiento predeterminado se ha configurado como 'Memoria externa' y no es ** legible/grabable **? ¿Esto arroja una excepción? o se creará automáticamente en 'Almacenamiento interno'? –
- 1. Dispositivos Android con Environment.getExternalStorageDirectory()! =/Mnt/sdcard /?
- 2. Environment.getExternalStorageDirectory no devuelve la ruta al almacenamiento extraíble
- 3. Android: cómo usar CursorAdapter?
- 4. Android: cómo usar SectionIndexer
- 5. ¿Cómo usar Android ViewSwitcher?
- 6. ¿Cómo usar Android ViewPager?
- 7. Android: Cómo usar AlarmManager
- 8. ¿Cómo usar Android DownloadManager?
- 9. android - ¿cómo puedo usar el "android: layoutDirection"?
- 10. ¿Cómo usar Parcel en Android?
- 11. cómo usar getSharedPreferences en android
- 12. android: ¿Cómo usar colores personalizados?
- 13. ¿Cómo usar onPause con Android?
- 14. Android: ¿Cómo usar "uses-library"?
- 15. Cómo usar setImageUri() en Android
- 16. Cómo usar Zxing en Android
- 17. cómo usar rawQuery en android
- 18. Cómo usar DefaultHttpClient en Android?
- 19. android cómo puedo usar la clase ObjectAnimator para android 2.2
- 20. ¿Cómo usar sockets UDP en android?
- 21. ¿Cómo usar el CacheManager de Android?
- 22. ¿Cómo usar pthreads con Android NDK?
- 23. Cómo usar las herramientas predeterminadas de Android
- 24. Android - Cómo usar el complemento PhoneGap Share
- 25. cómo usar el fragmento en Android 2.2?
- 26. ¿Cómo puedo usar ACTION_VOICE_SEARCH_HANDS_FREE en Android 4.1?
- 27. Cómo usar el micrófono en Android
- 28. Desarrollo de Android: cómo usar onKeyUp?
- 29. cómo usar la fuente tamil en Android
- 30. ¿Cómo usar ExecutorService con Android AsyncTask?
No se olvide de comprobar si el almacenamiento externo se monta:. 'Environment.getExternalStorageState() es igual a (Environment.MEDIA_MOUNTED)' – Mannaz
buen comentario, Mannaz! BTW, ¿qué biblioteca necesita incluir para usar estas llamadas? ¿Es Android.os.Environment por casualidad? – gonzobrains
sí, importar android.os.Environment; – debracey