I have a todo list type application that stores all of the note data in a sqlite3 database. Each activity in the application needs access to the database to edit different
In my opinion, the Content Provider is complicated and if you are not sharing with activities that are not your own, you don't need it. Therefore, I suggest you use a singleton class first. Then if you have more time or need it, go for the Content Provider.
I've used a singleton successfully for 6 months without much difficulty. (I was careful to really make it a singleton though, only one instance that loads the data once)
Singleton
Content Provider
It is 2018 and in the meantime Android has evolved.
The Android architecture component that is recommended for this use case today is Android Room.
The recommended way to do this on Android is to use a ContentProvider. Your first content provider may feel like more trouble than it's worth, but once you get the pattern down it shouldn't be too bad provided you aren't trying to serialize blobs.
This is causing problems though
Which are...what?
and I would like a slightly more global access solution so I don't have to keep opening/closing/creating a database.
Opening and closing a SQLite database is cheap. Statics and singletons are to be avoided wherever possible. What makes you think your current solution is bad?