Проблема с правильным подключением файла базы данных внешней области в проекте Android Kotlin - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу подключить базу данных внешних областей к моему проекту Android.Realm уже настроен в build.gradle.Я скопировал тестовый файл базы данных: "realmdata.realm" в папку "raw" в "res".

При запуске проекта выдается сообщение об ошибке:

Причина: io.realm.exceptions.RealmFileException: Не удалось разрешить путь к файлу ресурса: realmdata.realm Kind: ACCESS_ERROR.
...
d.androidrealmtestapp.MainActivity.onCreate (MainActivity.kt: 40)
...

, что соответствует строке кода:

realm = Realm.getInstance(c)

Независимо от того, изменил ли я имя файла или положение в каталоге "res", вывод будет одинаковымПосле печати RealmConfiguration выдается: «realmFileName: default.realm» Почему «default.realm», поскольку я дал имя файла ресурса: «realmdata.realm»?Что я делаю неправильно?Итак, мой вопрос, как правильно подключить внешний файл области к проекту?Я новичок в kotlin и царстве.

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import io.realm.Realm
import io.realm.RealmConfiguration
import io.realm.annotations.RealmModule

class MainActivity : AppCompatActivity() {

private lateinit var mainRecycler : RecyclerView
lateinit var text: String
private lateinit var realm : Realm

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    println("--------------------------------------------- ")
    print(application.assets.toString())

    Realm.init(this)

    var c = RealmConfiguration.Builder()
        .assetFile("realmdata.realm")
        .modules(MyModule())
        .readOnly()
        .build()

    println("--------------------------------------------- ")
    println(" c configuration builder file:")
    println(c)
    println("--------------------------------------------- ")

   Realm.setDefaultConfiguration(c)
   realm = Realm.getInstance(c)

   realm.beginTransaction()
    print ("realm ...")
   realm.commitTransaction()

    mainRecycler = findViewById(R.id.main_recycler)
    mainRecycler.layoutManager = LinearLayoutManager(this)
    mainRecycler.adapter = MainAdapter()

}

@RealmModule(classes = arrayOf(RealmModel::class ))
private class MyModule {}

1 Ответ

0 голосов
/ 17 февраля 2019

Я скопировал тестовый файл базы данных: "realmdata.realm" в папку "raw" в папке "res"

Вам необходимо скопировать базу данных в assets папка

Чтобы создать папку ресурсов, следуйте этой.enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...