Если пользователь запрашивает восстановление данных, я делаю восстановление с внутренней SD-карты в каталог данных приложений с помощью FileInputStream и FileOutputStream.
Это работает на Android 8 и ниже, но с Android 9 больше не работает.
Я не получаю никакой безопасности или других связанных исключений.
Он завершился без ошибок, но данные (база данных) все еще старые со старыми записями.
Вот как я пишу файл базы данных:
byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
input = FileInputStream пути '/storage/emulated/0/appname/backupAuto_180913120029.db'
output = FileOutputStream пути '/data/user/0/packagename/databases/data.db'
output.flush();
output.close();
input.close();
UPDATE:
Если я переношу после записи / восстановления файл data.db с устройства и открою его с помощью SQLLite Tool, я увижу правильные данные.
Но приложение по-прежнему отображает старые данные. Неважно что я делаю.
Я использую ContentProvider и внутри getReadableDatabase (), но, похоже, я всегда получаю кэшированную или старую базу данных.