Android

How do I view my Realm file in the Realm Browser?

Как мне просмотреть мой файл Realm в браузере Realm?

Я только что открыл для себя Realm и хотел изучить его более подробно, поэтому решил создать пример приложения и повозиться с ним. Пока все хорошо.

Однако одна вещь, с которой я пока не смог разобраться, - это как просмотреть мою базу данных в браузере Realm. Как это можно сделать?

Переведено автоматически
Ответ 1

В настоящее время браузер Realm не поддерживает доступ к базам данных непосредственно на устройстве, поэтому вам необходимо скопировать базу данных из эмулятора / телефона, чтобы просмотреть ее. Это можно сделать с помощью ADB:

adb pull /data/data/<packagename>/files/ .

Эта команда извлечет все файлы Realm, созданные с помощью Realm.getInstance(new RealmConfiguration.Builder().build()) . Вызывается база данных по умолчанию default.realm.

Обратите внимание, что это будет работать только на эмуляторе или если устройство рутировано.

Ответ 2

Теперь вы можете просматривать Realm DB в браузере Chrome с помощью Stetho, разработанного Facebook. По умолчанию Stetho позволяет просматривать Sqlite, network, sharedpreferences, но с дополнительным плагином here также позволяет просматривать Realm.

После настройки вашего Application класса с вышеуказанными библиотеками, пока приложение запущено и подключено, откройте браузер Chrome и перейдитеchrome://inspect, чтобы просмотреть


введите описание изображения здесь

Затем Resources->Web Sql->default.realm


введите описание изображения здесь

Ответ 3

Вы также можете извлечь свой файл с любого устройства БЕЗ рутинга, используя оболочку ADB и команду run-as.

Вы можете использовать эти команды, чтобы извлечь из личного хранилища вашего приложения базу данных с именем your_database_file_name, расположенную в папке files:

adb shell "run-as package.name chmod 666 /data/data/package.name/files/your_database_file_name"

// For devices running an android version lower than Android 5.0 (Lollipop)
adb pull /data/data/package.name/files/your_database_file_name

// For devices running an Android version equal or grater
// than Android 5.0 (Lollipop)
adb exec-out run-as package.name cat files/your_database_file_name > your_database_file_name
adb shell "run-as package.name chmod 600 /data/data/package.name/files/your_database_file_name"
Ответ 4

Если вам лень каждый раз получать файл базы данных realm с помощью adb, вы могли бы добавить функцию экспорта в свой Android-код, которая отправляет вам электронное письмо с файлом базы данных realm в качестве вложения.

Вот пример:

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:

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