尝试使用以下语句打开sqlite db 分贝= openOrCreateDatabase(DBNAME,SQLiteDatabase.OPEN_READONLY,NULL);
我得到以下错误
java.lang.SecurityException:不再支持MODE_WORLD_READABLE
但如果我尝试用 OPEN_READWRITE 打开数据库,那么它就会打开。
你能帮我解决一下如何用只读模式打开数据库。
答案 0 :(得分:1)
你似乎在混合整数标志。
您正在致电openOrCreateDatabase()
method in Context
。该方法不接受SQLiteDatabase
标志,而是Context
标志。标记的解释方式不同,当目标SDK是Nougat或更高时,您会遇到此异常。
{{}} openDatabase()
static method in SQLiteDatabase
接收SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.CREATE_IF_NECESSARY
等标记。
考虑使用SQLiteOpenHelper
。它使您的数据库管理更容易,您只需调用getReadableDatabase()
表示您想要一个只读数据库。
答案 1 :(得分:0)
世界可读文件可能是一个安全漏洞。所以谷歌首先弃用它然后完全删除它。
MODE_WORLD_READABLE
在 Android M 之前的版本中已被弃用。但是在 Android N 中,它不再受支持并抛出SecurityException。
所以正如错误所示,`
不支持MODE_WORLD_READABLE
. Remove that flag from your
getSharedPreferences()call, replacing it with
MODE_PRIVATE或0.`