usar - almacenar datos de aplicaciones de Android en la tarjeta SD
porque no puedo mover aplicaciones ala tarjeta sd (6)
Aquí hay otro pequeño y bonito truco. La Application tiene una serie de métodos que son llamados para adquirir rutas. En particular, la aplicación tiene el método getDatabasePath con SQLiteOpenHelper para construir la ruta. Una clase de aplicación personalizada puede anular estos métodos para proporcionar diferentes rutas, incluidas las rutas en getExternalStorageDirectory .
El almacenamiento externo es específico de la aplicación o público. Hay métodos que reemplazan el mecanismo getExternalFilesDir() , getExternalFilesDir() y getExternalStoragePublicDirectory() respectivamente.
¿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?
El problema con el uso de la tarjeta SD es que no puede suponer de manera confiable 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.
Empezar:
Según el modelo / sistema operativo, puede acceder al directorio raíz de la tarjeta sd con:
File externalStorage = Environment.getExternalStorageDirectory();
Esto se referirá al almacenamiento sd interno o a la memoria sd interna.
externalStorage.getAbsolutePath()
devolverá uno de los siguientes valores
"/ sdcard /" o "/ mnt / sdcard /"
Para acceder a la memoria sd externa o micro SD, que normalmente 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: puedes ver una carpeta vacía external_sd
o sd
en la tarjeta sd
interna
memoria, esta carpeta está vacía y se usa para señalar a una 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 debe especificar el nombre del archivo y su lista
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 estás listo para ir ...
Es mejor usar Environment.getExternalStorageDirectory() que con el código "/ 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.
algunos dispositivos usan / mnt / sdcard como punto raíz de la tarjeta SD.
Advertencia: esta respuesta está desactualizada. Debe usar Environment.getExternalStorageDirectory() para obtener la ruta raíz de la tarjeta SD como se menciona en las respuestas a continuación.
Old Answer para que los comentarios sobre esto tengan sentido:
Agregar /sdcard/
a la raíz de su ruta debe dirigir su aplicación Android para usar 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.