У меня есть база данных, сохраненная в папке с ресурсами моего приложения, и я копирую базу данных, используя приведенный ниже код, когда приложение впервые открывается.
inputStream = mContext.getAssets().open(Utils.getDatabaseName());
if(inputStream != null) {
int mFileLength = inputStream.available();
String filePath = mContext.getDatabasePath(Utils.getDatabaseName()).getAbsolutePath();
// Save the downloaded file
output = new FileOutputStream(filePath);
byte data[] = new byte[1024];
long total = 0;
int count;
while ((count = inputStream.read(data)) != -1) {
total += count;
if(mFileLength != -1) {
// Publish the progress
publishProgress((int) (total * 100 / mFileLength));
}
output.write(data, 0, count);
}
return true;
}
Приведенный выше код работает без проблем, но когда вы пытаетесь запросить базу данных, вы получаете SQLite: нет такого исключения таблицы.
Эта проблема возникает только в Android P, все более ранние версии Android работают правильно.
Это известная проблема с Android P или что-то изменилось?
return true
добавитьLog.d("COPYINFO","Bytes Copied = " + String.valueOf(totalcount) + " to " + filepath);
, какой результат будет в Журнал? - person MikeT   schedule 23.05.2018D/SQLITE_CSU: DatabaseList Row 1 Name=main File=/data/user/0/my.packagename/databases/databasename.db Database Version = 1 D/SQLITE_CSU: Table Name = android_metadata Created Using = CREATE TABLE android_metadata (locale TEXT) D/SQLITE_CSU: Table = android_metadata ColumnName = locale ColumnType = TEXT Default Value = null PRIMARY KEY SEQUENCE = 0
Я полагаю, это показывает пустую базу данных на Android P. При тестировании на Android 8.1 регистрируются все таблицы, которые я ожидал увидеть. - person Michael J   schedule 23.05.2018