When it comes to Android application development, it’s often desirable to ensure the app is compatible with older versions of the Android OS. A customer has recently asked us to make an application while keeping backward compatibility down to SDK version 2.1 (API level 7). While working on that project, we encountered a problem: the built-in SQLite version 3.5.9 had a known bug that appeared under certain conditions. Incidentally, SQLite caused the application to crash due to a "database disk image is malformed" error and the entire database was rendered unusable. We didn't find a solution for this problem on the web, so we created the following workaround after some experimenting.
So, what should you do if you’ve stumbled upon this bug? Wrap database access into a content provider. The rest of this post gives step-by-step instructions on how to implement it in your own project.