从资产Android复制SQLite数据库不适用于KitKat 4.4

时间:2013-11-19 11:46:33

标签: android sqlite android-4.4-kitkat

我在StackOverflow上提出了不同的问题,但我的更新一点。

所有这些都不起作用: Question1 Question2 Question3

我将设备更新为Android KitKat 4.4,当我尝试使用此代码复制数据库时:

private void copyDataBase() throws IOException {
    InputStream myInput = context.getAssets().open(DB_NAME);
    String outFileName = DB_PATH + DB_NAME;
    OutputStream myOutput = new FileOutputStream(outFileName);
    byte[] buffer = new byte[1024];
    int length;
    while ((length = myInput.read(buffer)) > 0) {
        myOutput.write(buffer, 0, length);
    }
    myOutput.flush();
    myOutput.close();
    myInput.close();
}

我在第:

行获得了一个FileNotFoundException
OutputStream myOutput = new FileOutputStream(outFileName);

有人在Android KitKat上修复此问题??? (其他平台效果很好)

感谢您的帮助。

Giulio的

1 个答案:

答案 0 :(得分:4)

  

完全硬编码

永远没有硬编码路径Use getDatabasePath()为数据库找到合适的位置。

  

其他平台效果很好

对于辅助帐户,它肯定会在Android 4.2+平板电脑上崩溃。它也可能在其他环境中崩溃。 永远没有硬编码路径

请注意,SQLiteAssetHelper使用getDatabasePath()