I am attempting to create a local SQLite database with SQLCipher
Here is my method for creating/writing to the database:
class DatabaseUtils {
val storagePath = Environment.getExternalStorageDirectory()
fun storeTransaction(context: Context, password: String, transaction: Transaction) {
SQLiteDatabase.loadLibs(context)
val databaseFile: File = context.getDatabasePath("$storagePath/Test.db")
if (!databaseFile.exists()) {
databaseFile.mkdirs()
}
val database: SQLiteDatabase = SQLiteDatabase.openOrCreateDatabase(databaseFile, password, null)
database.execSQL("CREATE TABLE IF NOT EXISTS Transactions(cardNumber INTEGER)")
database.execSQL("INSERT INTO Transactions(cardNumber) VALUES(${transaction.cardNumber})")
database.close()
}
}
I have declared
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
and
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
in my manifest, and requested permission when I called the function like so:
override fun onStart() {
super.onStart()
initUI()
if (ContextCompat.checkSelfPermission(context!!, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity!!,
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),
1)
}
if (ContextCompat.checkSelfPermission(context!!, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity!!,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
2)
}
val databaseUtils = DatabaseUtils()
databaseUtils.storeTransaction(context!!,getString(R.string.app_version), Transaction("12345678"))
}
The directory gets created, but I am still getting the above error when I call openOrCreateDatabase. What am I missing?