10

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

非常感谢。

4

1 回答 1

24

好吧,这取决于您所说的“图书馆拥有自己的数据库的能力”是什么意思。

没有什么可以阻止 Android 库项目——甚至是普通的 Android 编译的 JAR——使用SQLiteDatabaseSQLiteOpenHelper和 kin。因此,从代码的角度来看,库可以拥有自己的数据库。不过,您将需要Context来自主机应用程序的对象,至少与 一起使用SQLiteOpenHelper

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

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

于 2012-10-03T18:35:57.610 回答