@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory){
File externalFilesDir = Environment.getExternalStorageDirectory();
if(externalFilesDir == null)
return null;
File dbFile = new File(externalFilesDir, SQLiteHelper.DATABASE_NAME);
return SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.CREATE_IF_NECESSARY);
}
我使用上面的代码将db文件写入外部存储。因此将其保存在
/mnt/sdcard/
。当我在Android 2.3.5中尝试时,它可以工作。但是使用Android 4则无法正常工作。但是它仍然不会给我任何错误。 最佳答案
这是寻找相同事物的其他人的答案。
// ======= This will allow to create the DB in /mnt/sdcard/
// External folder DB access for Android 4+
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode,CursorFactory factory, DatabaseErrorHandler errorHandler) {
File externalFilesDir = Environment.getExternalStorageDirectory();
if(externalFilesDir == null)
return null;
File dbFile = new File(externalFilesDir, SQLiteHelper.DATABASE_NAME);
return super.openOrCreateDatabase(dbFile.getAbsolutePath(), Context.MODE_WORLD_WRITEABLE, null, errorHandler);
}
// External folder DB access for Android 2.3
@Override
public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory){
File externalFilesDir = Environment.getExternalStorageDirectory();
if(externalFilesDir == null)
return null;
File dbFile = new File(externalFilesDir, SQLiteHelper.DATABASE_NAME);
return SQLiteDatabase.openDatabase(dbFile.getAbsolutePath(), null, SQLiteDatabase.CREATE_IF_NECESSARY);
}