Skip to content

Instantly share code, notes, and snippets.

@nesk
Last active June 26, 2018 14:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nesk/47cf42dd1a319139dd2347e2b99686e4 to your computer and use it in GitHub Desktop.
Save nesk/47cf42dd1a319139dd2347e2b99686e4 to your computer and use it in GitHub Desktop.
Android pre-populated database (installing on read)
package com.example.example
// ...
class ActsDbHelper(val context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
// private val preferences: SharedPreferences = ...
private fun installedDatabaseIsOutdated(): Boolean {
// ...
}
private fun writeDatabaseVersionInPreferences() {
// ...
}
private fun installDatabaseFromAssets() {
// ...
}
@Synchronized
private fun installOrUpdateIfNecessary() {
if (installedDatabaseIsOutdated()) {
context.deleteDatabase(DATABASE_NAME)
installDatabaseFromAssets()
writeDatabaseVersionInPreferences()
}
}
override fun getWritableDatabase(): SQLiteDatabase {
throw RuntimeException("The $DATABASE_NAME database is not writable.")
}
override fun getReadableDatabase(): SQLiteDatabase {
installOrUpdateIfNecessary()
return super.getReadableDatabase()
}
override fun onCreate(db: SQLiteDatabase?) {
// Nothing to do
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
// Nothing to do
}
companion object {
// ...
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment