Возникла проблема с Android 9.
Использую "стандартный" класс MyDataBaseOpenHelper extends SQLiteOpenHelper
С выходом андроид 9 появилась проблема android.database.sqlite.SQLiteException:
То есть только на 9 не хочет работать. Базу копирует но таблиц в ней не находит. E/SQLiteLog: (1) no such table: Может кто сталкивался с данной ситуацией?
Методы класса:
public ExternalDbOpenHelper(Context context, String databaseName) {
super(context, databaseName, null, DATABASE_VERSION);
this.context = context;
// путь к базам
if (android.os.Build.VERSION.SDK_INT >= 17) DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
else DB_PATH = String.format("//data//data//%s//databases//", context.getPackageName());
DB_NAME = databaseName;
//openDataBase();
}
//Создаст базу, если она не создана
public void createDataBase() {
boolean dbExist = checkDataBase();
if(dbExist){
Log.d(LOG_TAG, DB_NAME+" BASE ALREADY EXIST");
//база уже есть
}else{
//создаем пустую базу
this.getReadableDatabase();
Log.d(LOG_TAG, DB_NAME+" NEW BASE IS CREATED");
try {
copyDataBase();
Log.d(LOG_TAG, DB_NAME+" BASE COPY");
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
//Проверка существования базы данных
private boolean checkDataBase() {
SQLiteDatabase checkDb = null;
try {
String path = DB_PATH + DB_NAME;
checkDb = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
} catch (SQLException e) {
Log.e(this.getClass().toString(), "Error while checking db");
}
if (checkDb != null) {
checkDb.close();
}
return checkDb != null;
}
//Метод копирования базы
private void copyDataBase() throws IOException {
// Открываем поток для чтения из уже созданной нами БД
//источник в assets
InputStream externalDbStream = context.getAssets().open(DB_NAME);
// Путь к уже созданной пустой базе в андроиде
String outFileName = DB_PATH + DB_NAME;
// поток для записи в эту БД побайтно
OutputStream localDbStream = new FileOutputStream(outFileName);
// копирование
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = externalDbStream.read(buffer)) > 0) {
localDbStream.write(buffer, 0, bytesRead);
}
// закроем потоки
localDbStream.close();
externalDbStream.close();
}
public SQLiteDatabase openDataBase() throws SQLException {
String path = DB_PATH + DB_NAME;
if (database == null) {
createDataBase();
database = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
}
return database;
}
@Override
public synchronized void close() {
if (database != null) {
database.close();
}
super.close();
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть вопрос, не могу подключить к верстаемой странице на своем ПК шрифт neris
Есть метод, который добавляет новые div на страницу