¿Cómo usar SQLiteOpenHelper con la base de datos en la tarjeta SD?
De acuerdo con varias respuestas aquí y en la aplicación de extensión web y su método heredado getDatabasePath () permitiría establecer la ruta de almacenamiento de la base de datos desde la ubicación de memoria interna estándar a una tarjeta SD insertada de mayor tamaño.
Esto no funciona para mí. La construcción sugerida todavía está utilizando la base de datos en la memoria interna. De hecho, el método getDatabasePath () nunca es invocado por SQLiteOpenHelper.
Me gustaría poner esto en funcionamiento.
Esto es lo que hice hasta ahora:
1.) Aplicación de extensión:
public class MyApplication extends Application {
@Override
public File getDatabasePath(String name) {
// Just a test
File file = super.getDatabasePath(name);
return file;
}
@Override
public void onCreate() {
// Just a test
super.onCreate();
}
}
2.) Agregar aplicación extendida al manifiesto:
<application
...
android:name="MyApplication"
... >
3.) Extender y usar SQLiteOpenHelper:
public class MySqliteOpenHelper extends SQLiteOpenHelper {
public void onCreate(SQLiteDatabase sqliteDatabase) {
...
}
@Override
public void onUpgrade(SQLiteDatabase sqliteDatabase, int oldVersion, int newVersion) {
...
}
}
4.) Usar el SQLiteOpenHelper extendido en mis actividades de la manera habitual:
public class MyActivity extends Activity {
private MySqliteOpenHelper mySqliteOpenHelper;
private SQLiteDatabase sqliteDatabase;
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
...
mySqliteOpenHelper = new MySqliteOpenHelper(getApplicationContext());
sqliteDatabase = mySqliteOpenHelper.getReadableDatabase();
...
}
@Override
protected void onDestroy() {
if (mySqliteOpenHelper != null) {
mySqliteOpenHelper.close();
mySqliteOpenHelper = null;
}
super.onDestroy();
}
}
Quiero señalar que la clase de aplicación extendida está funcionando en general. Puedo ver esto porque se llama a MyApplication.onCreate (). Pero MyApplication.getDatabasePath () no se llama.
Cualquier ayuda es muy apreciada