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

JMR*_*ies 9 sqlite android

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

非常感谢.

Com*_*are 22

那么,这取决于你所说的"图书馆拥有自己的数据库的能力".

没有什么能够阻止一个Android库项目-甚至是普通的Android编译JAR -利用SQLiteDatabase,SQLiteOpenHelper和它的同胞.因此,从代码的角度来看,库可以拥有自己的数据库.但是,您需要Context来自主机应用程序的对象,至少可以使用该对象SQLiteOpenHelper.

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

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