我希望在SD卡上创建一个sqlite数据库(不想使用用户的内部存储)。我熟悉OpenHelper模式:
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);
}
...
所以如果我们想要在SD卡上创建文件,我认为我们需要使用:
public static SQLiteDatabase openOrCreateDatabase (String path,
SQLiteDatabase.CursorFactory factory);
但是,“factory”参数应该是什么,应该使用哪个工厂?
同时,我有点担心如果用户在使用我的应用程序时拔掉SD卡会发生什么事情。
谢谢
getDatabasePath
不起作用。阅读打开帮助程序源代码,我注意到该方法从未被调用,而是调用mContext.openOrCreateDatabase
,它会在默认的内部存储中创建DB。因此,这个方法也应该被重写。 - Mister Smith