0

開発者コンソールで次のクラッシュ レポートを受け取りました。

java.lang.RuntimeException: Unable to start activity ComponentInfo{ZhuangDictActivity}: android.database.sqlite.SQLiteDiskIOException: disk I/O error
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.database.sqlite.SQLiteDiskIOException: disk I/O error
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:2144)
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1996)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:905)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:995)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:988)
at DatabaseHelper.initDb(DatabaseHelper.java:79)
at ZhuangDictActivity.onCreate(ZhuangDictActivity.java:329)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more

これは、問題を引き起こしている DabaseHelper.java の一部です。

public void initDb() {
    if (db != null) {
        db.close();
    }
    db = SQLiteDatabase.openOrCreateDatabase(ZhuangDictActivity.dbFile, null);
}

行 79 は db = SQLiteDatabase.openOrCreateDatabase(ZhuangDictActivity.dbFile, null) 問題を引き起こしている ZhuangDictActiviy.java の一部です。

if (dictName == null) {
} else {
    modifyDictVar(dictName);
    setTitle(loadDictInfo());

    initDbFile();
    databaseHelper.initDb();
}

行 329 は、databaseHelper.initDb() IOException をスローする ZhuangDictActivity.java の別の部分です。

private void initDbFile() {
    dbFile = new File(dbFileName);
    if (!dbFile.exists()) {
        try {
            dbFile.createNewFile();
        } catch (IOException e) {
            showErrorDialog(getString(R.string.error));
            e.printStackTrace();
        }
    }
}

私のプロジェクトには、データベースを外部ストレージに書き込むことが含まれています。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

試す

dbFile = Environment.getDataDirectory() + “/data/YOUR_PACKAGE/databases/”; 

また、同様の回答を見てください。

于 2013-10-21T03:04:29.340 に答える