androidandroid-sqliteandroid-roomandroid-room-prepackageddatabase

How to use Room Persistence Library with pre-populated database?


I'd like to use Room with a pre-populated database, but I can't understand how to tell Room where to find my database.

I've now put it in src/main/assets/databases and when I create the instance for the Room database I create it this way:

Room.databaseBuilder(
    getApplicationContext(),
    AppDatabase.class,
    "justintrain.db"
)
.allowMainThreadQueries()
.build();

This way tho, I think it's creating a new database every time, or anyways, it's not using the pre-populated one.

How can I make it to find my database?


Solution

  • This is how I solved it, and how you can ship your application with a pre-populated database (up to Room v. alpha5)

    Note that you have to use "database_name.db" and not getDatabasePath() or other methods: it just needs the name of the file.