Estoy buscando crear una base de datos sqlite en la tarjeta SD (no quiero utilizar el almacenamiento interno del usuario). Estoy familiarizado con el patrón OpenHelper:Base de datos SQLite en tarjeta SD
public DatabaseFoo(Context context) {
OpenHelper openHelper = new OpenHelper(context);
mDb = openHelper.getWritableDatabase();
}
private static class OpenHelper extends SQLiteOpenHelper {
public OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
...
por lo que si queremos crear en la tarjeta SD, creo que en lugar tenemos que utilizar:
public static SQLiteDatabase openOrCreateDatabase (String path,
SQLiteDatabase.CursorFactory factory);
pero lo que es el argumento de "fábrica" se supone que es, ¿qué fábrica se debe utilizar?
también un poco preocupado por lo que ocurre si el usuario retira la tarjeta SD mientras mi aplicación está en uso ..
Gracias
El 'anulación getDatabasePath' de Aplicación o una costumbre ContextWrapper no funciona. Al leer el código fuente de Open Helper, noté que el método nunca se llama y, en su lugar, llama a 'mContext.openOrCreateDatabase', que crea el DB en el almacenamiento interno predeterminado. Por lo tanto, este método también debe ser anulado. –
[aquí] (http://stackoverflow.com/questions/5332328/sqliteopenhelper-problem-with-fully-qualified-db-path-name/9168969#9168969) puede encontrar un ejemplo de trabajo de getDatabasePath sobrescrito y openOrCreateDatabase que funciona en Android 2.2. android 4.4 – k3b