我的代碼在應用程序類文件中創建一個數據庫正在成千上萬的設備上工作,但最近我有以下崩潰,很多次,都從android 6.0,所以它可能與新的android版本。此外,只有在給定3臺設備的情況下才會看到此故障。請告知如何解決這個問題..Android 6.0更新導致在初始化數據庫sqlite崩潰
設備: 帆布A1(AQ4501_sprout),夢野(MI-498_sprout),耀V(Sparkle_V_sprout)
崩潰日誌:
Caused by: android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at android.database.sqlite.SQLiteConnection.nativeOpen(Native Method)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:207)
at android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191)
at android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
at android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
at android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806)
at android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:571)
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:269)
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
參考代碼(碰撞在db.getWritableDatabase發生()):
//Application class
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
dataBaseInit();
}
private void dataBaseInit() {
db = new MyDatabase(getApplicationContext());
// This will open an reference to database
dataBaseRef = db.getWritableDatabase();
}
}
//Database class
public class MyDatabase extends SQLiteOpenHelper {
// All Static variables
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "myDatabase";
public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
崩潰發生在db.getWritableDatabase()。
請告知如何解決這個問題。
錯誤代碼14通常表示文件因某種原因被鎖定或阻止。兩個問題 - 你在清單中使用android:sharedUserId?你如何彙集你傳遞給幫手的路徑?此代碼在Android 6.0上可能無效。你可以發佈該部分? –
我沒有在mainfest中使用sharedUsedId。添加了上面的代碼。 – user1908860
您有清單中的寫入外部存儲權限嗎? '<使用權限android:name =「android.permission.WRITE_EXTERNAL_STORAGE」/>' –