我的开发人员应用程序在Android 9上打开数据库的问题

问题描述 投票:0回答:1

你能帮我吗?

我已经在包含数据库的Google Play商店上创建并发布了该应用,我已经在不同的Android手机上对其进行了测试。除了在Android 9上,我的应用程序在android版本(Android 10、8、5等)上均可完美运行,您知道如何解决该问题吗?我在华为Smart Z,荣耀P20,三星Y6,小米米上发现了这个问题。 Play商店控制台表示我的应用可以在该模型上运行。我是应用程序开发的初学者。

在我的华为Smart上发生的情况:当我安装应用程序时,当我想输入数据库时​​,它会打开并崩溃,而当我再次输入应用程序时,它会崩溃并在logcat上崩溃:

E/Path 1: data/data/com.gema/databases/ 
E/SQLiteLog: (14) cannot open file at line 36906 of [c255889bd9]
E/SQLiteLog: (14) os_unix.c:36906: (2) open(//data/data/com.gematranslate/databases/gema_recnik.db) - 
E/SQLiteDatabase: Failed to open database 'data/data/com.gematranslate/databases/gema_recnik.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (Sqlite code 14 SQLITE_CANTOPEN): Could not open database, (OS error - 2:No such file or directory)

在android清单中,我放入:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

这是我的检查数据库代码:

public boolean checkDataBase() {
    SQLiteDatabase checkDB = null;
    try {
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath,null,SQLiteDatabase.OPEN_READONLY);
        myContext.getDatabasePath(DB_NAME).getPath();
        checkDB.disableWriteAheadLogging();
    } catch (SQLException e)
    {
        //
    }
    if (checkDB!= null){
        checkDB.close();
    }
    return checkDB != null? true : false;

这是我打开数据库的代码:

public void openDataBase() {
    String myPath = DB_PATH + DB_NAME;
    myContext.getDatabasePath(DB_NAME).getPath();
    db = SQLiteDatabase.openDatabase(myPath,null, SQLiteDatabase.OPEN_READWRITE);
    db.disableWriteAheadLogging();

如果有人可以帮助我,非常感谢。

android database android-sqlite android-external-storage opendatabase
1个回答
0
投票
这是所有版本的Android都支持的解决方案
© www.soinside.com 2019 - 2024. All rights reserved.