我想将外部领域数据库连接到我的Android项目。 Realm已在build.gradle中设置。我将测试数据库文件“ realmdata.realm”复制到“ res”中的“ raw”文件夹中。
运行项目会给我错误:
由以下原因引起:io.realm.exceptions.RealmFileException:无法解析资产文件的路径:realmdata.realm种类:ACCESS_ERROR。
...
d.androidrealmtestapp.MainActivity.onCreate(MainActivity.kt:40)
...
对应于代码行:
realm = Realm.getInstance(c)
无论我更改文件名或“ res”目录中的位置,输出都是一样的。在打印RealmConfiguration之后,输出为:“ realmFileName:default.realm”为什么要使用“ default.realm”,因为我给资产文件指定了名称:“ realmdata.realm”?我究竟做错了什么?所以我的问题是如何正确地将外部领域文件连接到项目?我是Kotlin和Realm的初学者。
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 {}