Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 6.0更新在初始化期间导致DB sqlite崩溃_Android_Sqlite_Crash_Android 6.0 Marshmallow - Fatal编程技术网

Android 6.0更新在初始化期间导致DB sqlite崩溃

Android 6.0更新在初始化期间导致DB sqlite崩溃,android,sqlite,crash,android-6.0-marshmallow,Android,Sqlite,Crash,Android 6.0 Marshmallow,我在应用程序类文件中创建数据库的代码在数千台设备上运行,但最近我遇到了以下崩溃,很多次都是来自android 6.0,因此它可能与新的android版本有关。此外,只有在下面给出的3台设备上才能看到此崩溃。请告知如何解决此问题 设备: 画布A1(AQ4501_-sprout)、Dream Uno(Mi-498_-sprout)、Sparkle V(Sparkle_-V_-sprout) 事故日志: 原因:android.database.sqlite.SQLiteCantOpenDatabase

我在应用程序类文件中创建数据库的代码在数千台设备上运行,但最近我遇到了以下崩溃,很多次都是来自android 6.0,因此它可能与新的android版本有关。此外,只有在下面给出的3台设备上才能看到此崩溃。请告知如何解决此问题

设备: 画布A1(AQ4501_-sprout)、Dream Uno(Mi-498_-sprout)、Sparkle V(Sparkle_-V_-sprout)

事故日志:

原因:android.database.sqlite.SQLiteCantOpenDatabaseException:未知错误(代码14):无法打开数据库
位于android.database.sqlite.SQLiteConnection.nativeOpen(本机方法)
位于android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:207)
位于android.database.sqlite.SQLiteConnection.open(SQLiteConnection.java:191)
位于android.database.sqlite.SQLiteConnectionPool.openConnectionLocked(SQLiteConnectionPool.java:463)
位于android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:185)
位于android.database.sqlite.SQLiteConnectionPool.open(SQLiteConnectionPool.java:177)
位于android.database.sqlite.SQLiteDatabase.openInner(SQLiteDatabase.java:806)
位于android.database.sqlite.SQLiteDatabase.open(SQLiteDatabase.java:791)
位于android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:694)
位于android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:571)
位于android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:269)
位于android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
位于android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
参考代码(在db.getWritableDatabase()处发生崩溃):

}

db.getWritableDatabase()上发生崩溃


请建议如何解决此问题。

在清单中添加“android.permission.WRITE_EXTERNAL_STORAGE”权限后,我仍然遇到问题,但仍然像上面那样崩溃。

错误代码14通常表示文件由于某种原因被锁定或阻止。两个问题——您是否在清单中使用android:sharedUserId?如何装配传递给辅助对象的路径?此代码在Android 6.0上可能无效。你能发布那个部分吗?我在mainfest中没有使用sharedUsedId。添加了上述代码。您在清单中是否具有“写入外部存储”权限<代码>可能重复的“是”,我已添加此权限。正如我所提到的,这已经在所有的设备中工作很久了。这个问题只发生在少数升级到6.0(棉花糖)的设备上。是的。长期以来,这在所有设备中都有效。只有少数升级到6.0(棉花糖)的设备才会出现此问题。
//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);
  }