gpt4 book ai didi

android - FileOutputStream wit 数据库文件在 Android 9 上不再工作

转载 作者:行者123 更新时间:2023-11-29 15:35:07 25 4
gpt4 key购买 nike

如果用户请求恢复数据,我会使用“FileInputStream”和“FileOutputStream”从内部 SD 卡恢复到应用程序数据目录。

这适用于 Android 8 及更低版本,但自 Android 9 以来它不再适用。我没有收到任何安全或其他相关异常。
它没有错误地完成,但数据(数据库)仍然是具有较旧条目的旧数据。

这是我写数据库文件的方式:

byte[] buffer = new byte[1024];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}

input = 路径 '/storage/emulated/0/appname/backupAuto_180913120029.db' 的 FileInputStreamoutput = 路径'/data/user/0/packagename/databases/data.db'的FileOutputStream

        output.flush();
output.close();
input.close();

更新:
如果我在从设备写入/恢复 data.db 文件后进行传输并通过 SQLLite 工具打开它,我会看到正确的数据。
但是应用程序仍然显示旧数据。不管我做什么。

我正在使用 ContentProvider 并在 getReadableDatabase() 内部,但似乎我总是得到一个缓存的或旧的数据库。

最佳答案

我在以下位置找到答案:

Android P - 'SQLite: No Such Table Error' after copying database from assets

通过将此添加到我的 SQLiteOpenHelper 解决了这个问题:

@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
db.disableWriteAheadLogging();
}

关于android - FileOutputStream wit 数据库文件在 Android 9 上不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52314870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com