java.lang.SecurityException:OPEN_READONLY不再支持MODE_WORLD_READABLE

时间:2017-08-17 04:44:13

标签: android android-sqlite

尝试使用以下语句打开sqlite db 分贝= openOrCreateDatabase(DBNAME,SQLiteDatabase.OPEN_READONLY,NULL);

我得到以下错误

  

java.lang.SecurityException:不再支持MODE_WORLD_READABLE

但如果我尝试用 OPEN_READWRITE 打开数据库,那么它就会打开。

你能帮我解决一下如何用只读模式打开数据库。

2 个答案:

答案 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.`