Base de données SQLite sur carte SD

Je cherche à créer une base de données sqlite sur la carte sd (ne souhaitez pas utiliser de l'utilisateur un espace de stockage interne). Je suis familier avec les OpenHelper modèle:

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);
    }

    ...

donc, si nous voulons créer sur la carte sd, je pense, au contraire, nous devons utiliser:

public static SQLiteDatabase openOrCreateDatabase (String path, 
      SQLiteDatabase.CursorFactory factory);

Mais qu'est-ce que la "fabrique" argument censé être, ce que l'usine devrait être utilisé?

Aussi un peu inquiet à propos de ce qui se passe si l'utilisateur retire la carte SD alors que mon application est en cours d'utilisation..

Grâce

source d'informationauteur user291701