1

我在 android 市场上有一个 android 应用程序,这个应用程序是用具有世界可读和可写模式的 sqlite 数据库创建的。SQLite 数据库不存储任何用户特定信息。然而,在有根手机中,如果我打开 /data/data/packagename/databases/ 我可以看到这些文件是世界可读/可写的,几乎适用于所有应用程序。

现在我已将应用程序 SQLite 数据库更改为私有模式,之后该数据库文件权限更改为非世界可读/可写。但是“数据库日志”文件权限没有改变。

这是一个 android 问题吗,任何时候应用程序升级数据库日志权限都不会改变,即使是使用私有模式创建的主数据库。

我需要担心日志文件的权限吗,这个日志文件大部分时间都是空文件。有什么建议可以解决上述问题..?

4

1 回答 1

2

如果您创建一个数据库MODE_WORLD_WRITEABLE,那么您设备上的每个应用程序都可以删除它、打开它并插入/读取数据、复制它等,即使该应用程序没有权限WRITE_EXTERNAL_STORAGE

日志是由 sqlite 创建的,一旦文件存在,sqlite 没有理由更改文件的权限。删除数据库文件可能不会同时删除日志,这可能是您的问题的原因。

如果您在打开数据库之前删除日志文件,或者chmod/File.setWritable()根据您的需要删除该问题应该得到解决。

于 2012-04-30T14:40:00.820 回答