Эта проблема, по-видимому, приводит к сбою на Android P гораздо чаще, чем в предыдущих версиях, но это не ошибка на самом Android P.
Проблема в том, что ваша строка, в которой вы присваиваете значениеString filePath
открывает соединение с базой данных, которое остается открытым при копировании файла из ресурсов.
Чтобы устранить проблему, замените строку
String filePath = mContext.getDatabasePath(Utils.getDatabaseName()).getAbsolutePath();
кодом для получения файла.Значение пути и затем закройте базу данных:
MySQLiteOpenHelper helper = new MySQLiteOpenHelper();
SQLiteDatabase database = helper.getReadableDatabase();
String filePath = database.getPath();
database.close();
А также добавьте внутренний вспомогательный класс:
class MySQLiteOpenHelper extends SQLiteOpenHelper {
MySQLiteOpenHelper(Context context, String databaseName) {
super(context, databaseName, null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}