Java 当我在本地文件夹中存储领域数据库时,我的应用程序在android 11上崩溃了?
当我要将realm数据库保存到本地内部存储时,Android 11上的应用程序崩溃。该应用程序在所有其他版本中都能工作,但今天我将我的应用程序更新到android 11,它崩溃了Java 当我在本地文件夹中存储领域数据库时,我的应用程序在android 11上崩溃了?,java,android,database,realm,Java,Android,Database,Realm,当我要将realm数据库保存到本地内部存储时,Android 11上的应用程序崩溃。该应用程序在所有其他版本中都能工作,但今天我将我的应用程序更新到android 11,它崩溃了 E/AndroidRuntime: FATAL EXCEPTION: main Process: PID: 7882 io.realm.exceptions.RealmError: Unrecoverable error. open() failed: Operation not permitted in io_re
E/AndroidRuntime: FATAL EXCEPTION: main
Process: PID: 7882
io.realm.exceptions.RealmError: Unrecoverable error. open() failed: Operation not permitted in io_realm_internal_Group.cpp line 210
at io.realm.internal.Group.nativeWriteToFile(Native Method)
private Realm realm;
try {
File file = new File(folderPath);
if (!file.exists()) {
file.mkdir();
}
realm = new File(file, fileName);
if (realm .exists()) {
realm .delete();
}
realm.writeCopyTo(realm ); // crashing here in this line
} catch (IOException e) {
e.printStackTrace();
}
android 11中的存储权限完全改变了应用程序访问它的方式。现在,应用程序不能访问除自己的数据目录以外的其他存储。一些不访问文件系统就无法工作的应用程序(如file manager)需要具有所有文件访问权限。 你的应用程序在android 11中崩溃,很可能是因为它没有在存储上写入的权限。
更多信息-阅读文档后,我通过将getExternalStorageDirectory替换为context.getExternalFilesDir()解决了这个问题;将领域数据库本地保存在文件夹中以进行备份
您是否知道我应该添加哪些权限或代码?任何关于@praventry的想法都可以使用存储访问框架(SAF)访问存储,搜索如何实现它。