Android库项目可以拥有自己的SQLite数据库吗?

时间:2012-10-03 18:21:57

标签: android sqlite

我正在开发一个能够在多个应用中使用的库。它在每个中提供完全相同的功能,并且库的目标之一是尽可能容易且无痛地使用。这样,我希望使用SQLite数据库来存储与库相关的一些重要信息,但不能存储到主机应用程序。我四处搜索,无法找到任何确认或否认图书馆拥有自己的数据库的能力。有谁知道这是否可能?

非常感谢。

1 个答案:

答案 0 :(得分:21)

那么,这取决于你对“图书馆拥有自己的数据库的能力”的意思。

使用SQLiteDatabaseSQLiteOpenHelper和亲属无法阻止Android库项目 - 甚至是简单的Android编译的JAR。因此,从代码的角度来看,库可以拥有自己的数据库。您需要来自主机应用的Context对象,至少与SQLiteOpenHelper一起使用。

这是因为,从文件的角度来看,该库不存在于其托管应用程序之外。因此,默认情况下,数据库文件将存储在应用程序的内部存储部分中。您需要采取一些措施来尽量减少数据库文件名冲突的几率(例如,将您的库的包名称修改为文件名),因此主机应用程序不会尝试意外使用您的库的数据。 Context主要提供给SQLiteOpenHelper,以便它可以调用getDatabasePath()之类的方法来确定数据库文件的放置位置。

另外,请记住,主机应用程序可以访问您的数据库,就像它可以访问自己的数据库一样。请确保您记录有关此数据库的规则(例如,不要直接使用它,而是使用库的API)。