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

标签 android sqlite

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

非常感谢。

最佳答案

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

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

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

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

关于android - Android 库项目可以有自己的 SQLite 数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12714501/

相关文章:

java - 如何解决 Cursor IndexOutOfBounds

sqlite - SQLite比较行之间的值

android - recyclerView 适配器中的数据绑定(bind) - Android

android - "Backup"类别下的用户数据备份到 Google Drive

android - 如何打开 Youtube 应用的主要 Activity

php - 使用插入CI的数据库锁定错误

android - 如何在 android api 级别 12 模拟器上获取选项菜单?

java - Android:如何从 RSS feed 获取值并从另一个 RSS feed 中的值减去它

sql - 如何在SQLite3中绑定(bind)LIKE通配符

Android - 为 map 或图片设计数据库?