如何在领域浏览器中查看我的Realm文件?

问题

我刚刚发现了领域,并希望更详细地探索它,所以我决定创建示例应用程序并搞乱它。到目前为止这么好但是我还没有能够解决的一件事是如何在Realm Browser中查看我的数据库。有人能够让我深入了解如何做到这一点?任何建议将不胜感激!


#1 热门回答(112 赞)

目前,Realm Browser不支持直接在设备上访问数据库,因此你需要从模拟器/手机中复制数据库以进行查看。这可以通过使用ADB来完成:
adb pull /data/data/<packagename>/files/ .
该命令将获取使用Realm.getInstance(new RealmConfiguration.Builder().build())创建的所有Realm文件。默认数据库名为default.realm

请注意,这仅适用于模拟器或设备已植根。


#2 热门回答(92 赞)

现在,你可以使用Facebook开发的Stetho在Chrome浏览器上查看Realm DB。默认情况下,Stetho允许查看Sqlite,网络,共享偏好,但也允许使用额外的plugin here允许来查看Realm。

使用上述库配置Application类后,在应用程序运行并连接时,打开Chrome浏览器并导航chrome://inspect以查看

enter image description here

ThenResources->Web Sql->default.realm

enter image description here


#3 热门回答(51 赞)

如果你每次使用adb都懒得获取领域数据库文件,你可以在你的android代码中添加一个导出函数,它会向你发送一封带有领域数据库文件作为附件的电子邮件。

这是一个例子:

public void exportDatabase() {

    // init realm
    Realm realm = Realm.getInstance(getActivity());

    File exportRealmFile = null;
    try {
        // get or create an "export.realm" file
        exportRealmFile = new File(getActivity().getExternalCacheDir(), "export.realm");

        // if "export.realm" already exists, delete
        exportRealmFile.delete();

        // copy current realm to "export.realm"
        realm.writeCopyTo(exportRealmFile);

    } catch (IOException e) {
        e.printStackTrace();
    }
    realm.close();

    // init email intent and add export.realm as attachment
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("plain/text");
    intent.putExtra(Intent.EXTRA_EMAIL, "YOUR MAIL");
    intent.putExtra(Intent.EXTRA_SUBJECT, "YOUR SUBJECT");
    intent.putExtra(Intent.EXTRA_TEXT, "YOUR TEXT");
    Uri u = Uri.fromFile(exportRealmFile);
    intent.putExtra(Intent.EXTRA_STREAM, u);

    // start email intent
    startActivity(Intent.createChooser(intent, "YOUR CHOOSER TITLE"));
}

不要忘记将此用户权限添加到Android Manifest文件中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />