微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当我将领域数据库本地存储在文件夹中时,我的App在android 11上崩溃了吗?

如何解决当我将领域数据库本地存储在文件夹中时,我的App在android 11上崩溃了吗?

当我要将领域数据库保存在本地内部存储中时,该应用程序在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_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中,关于应用访问方式的存储权限已完全更改。现在,应用程序只能访问自己的数据目录,而不能访问其他存储。某些无法访问文件系统的应用程序(例如文件管理器)需要具有所有文件访问权限。 您的应用在android 11中崩溃,最有可能是因为它没有在存储上进行写入的权限。 有关更多信息-Read here

,

阅读文档后,我通过将getExternalStorageDirectory替换为context.getExternalFilesDir();解决了该问题。将领域数据库本地保存在要备份的文件夹中。

See Doc

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。