¿Hay alguna manera de almacenar datos de aplicaciones de Android en la tarjeta SD en lugar de en la memoria interna? Sé cómo transferir la base de datos sqlite de la aplicación de la memoria interna a la tarjeta SD, pero ¿qué pasa si la memoria interna se llena en primer lugar? ¿Cómo manejan esto todos?almacenamiento de datos de la aplicación Android en la tarjeta SD
Respuesta
Advertencia: Esta respuesta no está actualizada. Debe usar Environment.getExternalStorageDirectory() para obtener la ruta raíz de la tarjeta SD como se menciona en las respuestas a continuación.
respuesta Viejo por lo que los comentarios sobre esto sentido:
Adición /sdcard/
a la raíz de su trayectoria debe dirigir su aplicación Android para utilizar la tarjeta SD (al menos funciona de esa manera con el G1). Los objetos del sistema de archivos de Android le dan la capacidad de verificar el tamaño de los archivos ... por lo que debería ser posible (si es difícil) escribir algún código de fail-over. Este código ajustaría su ruta raíz si la memoria interna se llenara.
El problema con el uso de la tarjeta SD es que no puede suponer con seguridad que estará presente siempre que su aplicación lo necesite. Este no es el caso con la memoria interna. Siempre que su aplicación no dependa de estos datos para funcionar, debería estar bien.
Es mejor usar Environment.getExternalStorageDirectory() que codificar "/ sdcard" No siempre es seguro que el nombre de la carpeta se llame así. Además, la clase Environment ofrece un método getExternalStorageState() para verificar si el almacenamiento externo está disponible.
Esto no siempre funciona porque aparentemente la ubicación de la tarjeta SD * real * de Samsung es 'Environment.getExternalStorageDirectory() +"/external_sd "'. Otros dispositivos tendrán diferentes ubicaciones. – Muz
Aquí hay otro pequeño truco. El Application tiene una serie de métodos que se llaman para adquirir rutas. En particular, la aplicación tiene el método getDatabasePath con es utilizado por SQLiteOpenHelper para construir la ruta. Una clase de aplicación personalizada puede anular estos métodos para proporcionar diferentes rutas, incluidas las rutas en el getExternalStorageDirectory.
El almacenamiento externo es específico de la aplicación o público. Existen métodos que reemplazan el mecanismo getExternalStorageDirectory, getExternalFilesDir() y getExternalStoragePublicDirectory() respectivamente.
algunos dispositivos utilizan/mnt/sdcard como punto raíz de la tarjeta SD.
para comenzar:
Dependiendo del modelo/os, se puede acceder al directorio raíz de la tarjeta SD con:
File externalStorage = Environment.getExternalStorageDirectory();
Esto se referirá al almacenamiento SD interna o la memoria SD interna.
externalStorage.getAbsolutePath()
devolverá uno de los siguientes valores
"/ sdcard /" o "/ mnt/sdcard /"
Para acceder a la memoria externa SD o micro SD, que generalmente se conecta desde el exterior del teléfono/tableta, debe usar una de las siguientes carpetas que crea Android para apuntar a la memoria externa:
"/mnt/sdcard/sd"
"/mnt/sdcard/external_sd"
"/sdcard/external_sd"
"/sdcard/sd"
"/mnt/sdcard/"
ps: se puede notar una carpeta vacía o external_sd
sd
en la sdcard interna
memoria, esta carpeta está vacía y su utiliza para apuntar a la tarjeta micro SD externa.
al final asegúrese de tener acceso de lectura/escritura a la tarjeta sd android.permission.WRITE_EXTERNAL_STORAGE
en el xml del manifiesto de Android.
finalmente se debe especificar el nombre del archivo y su listo
private SQLiteDatabase DB = null;
private static final String DATABASE_NAME = "MyDb.db";
////////////
File sdcard = Environment.getExternalStorageDirectory();
String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + DATABASE_NAME;
DB = SQLiteDatabase.openDatabase(dbfile, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS);
///////////
y su listo para ir ...
Desafortunadamente, esto no es absolutamente estándar. En el LG Optimus está en/mnt/sdcard/_ExternalSD. Espero que alguien en Google revise todo eso. Nombrar los medios es tan malo (¿externo?) Y los documentos no dicen una palabra sobre cómo acceder a la segunda tarjeta sd cuando hay una incorporada. – Snicolas
¿Puede ayudarnos a obtener el nombre de todas las Carpetas presente en la tarjeta SD? –
- 1. Almacenamiento de datos en la tarjeta SD en Android
- 2. Servicio de reinicio para la aplicación en la tarjeta SD Cuando se repone la tarjeta SD
- 3. Instalación de la aplicación para Android sin tarjeta SD
- 4. Android Guardar imagen en la tarjeta SD
- 5. Android se mueve al comportamiento de la tarjeta SD
- 6. ¿Cómo borrar los datos escritos en la tarjeta sd automáticamente al desinstalar la aplicación de Android?
- 7. Base de datos SQLite en tarjeta SD
- 8. Android: ubicación absoluta de la tarjeta SD externa
- 9. Características de la tarjeta SD Android en Samsung Galaxy
- 10. Android: ¿buenas prácticas para organizar directorios y archivos en la tarjeta SD de almacenamiento?
- 11. Uso de la cámara sin tarjeta SD en Android
- 12. Escribiendo a la tarjeta SD
- 13. No se puede mover una aplicación a la tarjeta SD
- 14. Android: muestra la imagen de la tarjeta SD
- 15. Mover aplicaciones a la tarjeta SD
- 16. imágenes en la tarjeta SD de acceso
- 17. ¿La desinstalación de una aplicación de Android elimina la base de datos almacenada en la tarjeta SD?
- 18. Comprobar si existe directorio en la tarjeta SD de Android
- 19. Permiso para escribir en la tarjeta SD
- 20. Android - eliminar archivos en la tarjeta SD al desinstalar
- 21. Eliminar una carpeta en la tarjeta SD
- 22. Android: use la base de datos SQLite en la tarjeta SD (no use la tienda de datos Android interna)
- 23. Rendimiento de escritura de la tarjeta SD
- 24. Android guardar Bitmap a tarjeta SD
- 25. Android: eliminar una imagen de la tarjeta SD
- 26. ¿Cómo saber si la tarjeta SD está montada en Android?
- 27. Escritura de la tarjeta SD de Android, Permiso denegado
- 28. Buscar etiqueta de volumen de tarjeta SD en Android
- 29. Cómo guardar archivos en la tarjeta SD
- 30. Compruebe si existe archivo en la tarjeta SD en Android
¿cómo ajustar la ruta de raíz? – user121196
Ajuste la ruta de acceso de raíz que está utilizando. (Eso fue un poco confuso ... no se puede alterar la ruta raíz de Android) – haseman
Estoy usando SQLiteDatabase para crear la base de datos, sin embargo, el argumento del nombre de su constructor no puede contener una ruta, ¿cómo es posible que yo cree la base de datos en la tarjeta sd? – user121196