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