2015-10-27 96 views
4

我的代碼在應用程序類文件中創建一個數據庫正在成千上萬的設備上工作,但最近我有以下崩潰,很多次,都從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()。

請告知如何解決這個問題。

+0

錯誤代碼14通常表示文件因某種原因被鎖定或阻止。兩個問題 - 你在清單中使用android:sharedUserId?你如何彙集你傳遞給幫手的路徑?此代碼在Android 6.0上可能無效。你可以發佈該部分? –

+0

我沒有在mainfest中使用sharedUsedId。添加了上面的代碼。 – user1908860

+0

您有清單中的寫入外部存儲權限嗎? '<使用權限android:name =「android.permission.WRITE_EXTERNAL_STORAGE」/>' –

回答

0

我在清單中添加「android.permission.WRITE_EXTERNAL_STORAGE」權限後仍然遇到問題,但仍像上面那樣崩潰。

+0

是的。自從很久以來,這一直在所有設備上運行。這個問題只發生在幾個升級到6.0(棉花糖)的設備上。 – user1908860