android - 导入预填充的 Realm 数据库

标签 android realm

我已经预填充了 Realm 数据库,所以我有 default.realm。我想在另一个应用程序中使用它,所以我把它放在我的\res\raw 文件夹中。我读到它应该像调用 Realm.getInstance() 一样简单。我有这样的代码:

copyBundledRealmFile(this.getResources().openRawResource(R.raw.default0), "default.realm");

realm = Realm.getInstance(this);

private String copyBundledRealmFile(InputStream inputStream, String outFileName) {
        try {
            File file = new File(this.getFilesDir(), outFileName);
            FileOutputStream outputStream = new FileOutputStream(file);
            byte[] buf = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buf)) > 0) {
                outputStream.write(buf, 0, bytesRead);
            }
            outputStream.close();
            return file.getAbsolutePath();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

但它不起作用。我可以在我的应用程序包中看到一个 default.realm,所以我认为 copyBundledRealmFile 已执行,但随后会发生 io.realm.exceptions.RealmMigrationNeededException。我不知道是否有办法跳过迁移部分?因为我认为我实际上并没有迁移,只是使用预填充的数据库。并且编写 Migration 部分不会像调用 Realm.getInstance() 那样容易。

最佳答案

我刚刚遇到了同样的问题。但问题出在我的模型定义中。我是手动做的。

尝试在 Realm 浏览器中打开数据库并为 Java 保存模型定义。我做到了,它解决了问题。

关于android - 导入预填充的 Realm 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34001760/

相关文章:

react-native - React-native 的 Realm 。重置数据库

ios - 境界在今拓

java - 每次都传递相同的文件夹位置

安卓缩放图像

android - 获取android :label from other applications

android - 为什么我的计时器 Observable 从未被调用?

找不到android对命令(无线调试)

java - 更新 Realm 表

java - Realm 数据库跨平台兼容性?

ios - Realm Swift 中的多维数组(超出最大深度错误)