UPDATE (7. November 2019)
Room unterstützt jetzt die Verwendung einer vorgefertigten Datenbank ab Version 2.2.0
https://developer.android.com/jetpack/androidx/releases/room#2.2.0
Lösung vor Version 2.2.0: Einfache Lösung ohne andere externe Bibliotheken.
Room verwendet den vorhandenen Android-Framework-Code, um eine Datenbank zu erstellen oder zu öffnen. Wenn Sie sich den Quellcode von FrameworkSQLiteOpenHelper
(Room's Version von SQLiteOpenHelper
) ansehen, werden intern interne SQLiteOpenHelper.getReadableDatabase()
Methoden und andere Methoden aufgerufen, wo immer dies erforderlich ist.
Die einfachste Lösung besteht also darin, die DB-Datei einfach aus dem Assets-Verzeichnis zu kopieren, mContext.getDatabasePath("my-database.sqlite")
bevor Sie die DB mit Room erstellen.
In Ihrem Fall sieht der Code ungefähr so aus -
private final String DB_NAME = "my-database.sqlite";
private MyDatabase buildDatabase(Context context) {
final File dbFile = context.getDatabasePath(DB_NAME);
if(!dbFile.exists()) {
copyDatabaseFile(dbFile.getAbsolutePath());
}
return Room.databaseBuilder(context.getApplicationContext(),
MyDatabase.class, DB_NAME)
.build();
}
private void copyDatabaseFile(String destinationPath) {
}
Dieser Link enthält den Code, der zum Kopieren des DB- Links mit Code benötigt wird