開発者コンソールで次のクラッシュ レポートを受け取りました。
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();
}
}
}
私のプロジェクトには、データベースを外部ストレージに書き込むことが含まれています。この問題を解決するにはどうすればよいですか?