我正在开发一个可以跨多个应用程序使用的库。它在每个中都提供完全相同的功能,并且该库的目标之一是尽可能简单易用。这样,我希望使用 SQLite 数据库来存储一些与库相关的重要信息,而不是与主机应用程序相关的信息。我四处搜寻,找不到任何证实或否认图书馆拥有自己的数据库的能力。有谁知道这是否可能?
非常感谢。
好吧,这取决于您所说的“图书馆拥有自己的数据库的能力”是什么意思。
没有什么可以阻止 Android 库项目——甚至是普通的 Android 编译的 JAR——使用SQLiteDatabase
、SQLiteOpenHelper
和 kin。因此,从代码的角度来看,库可以拥有自己的数据库。不过,您将需要Context
来自主机应用程序的对象,至少与 一起使用SQLiteOpenHelper
。
这是因为,从文件的角度来看,该库不存在于其托管应用程序之外。因此,默认情况下,数据库文件将存储在应用程序的内部存储部分中。您将需要采取一些措施来尽量减少数据库文件名冲突的可能性(例如,将库的包名更改为文件名),因此主机应用程序不会尝试意外使用您的库数据。主要Context
是提供给SQLiteOpenHelper
它,以便它可以调用诸如getDatabasePath()
找出将数据库文件放在哪里的方法。
此外,请记住主机应用程序可以访问您的数据库,就像它可以访问自己的一样。请确保您记录有关此数据库的规则(例如,不要直接使用它,而是使用库的 API)。