2

可能重复:
在 2 个 android 应用程序之间共享 SQLite 数据库?

我正在尝试使用 SQLite 数据库,打开它,从中检索数据,插入数据,我做得很好,但是使用我在同一个应用程序中创建的 sqlite 数据库,但我正在尝试使用创建的其他数据库其他应用。

我试图像这样打开数据库:

String DB_PATH= "/data/data/my.sqlitemanager/databases/";
String DB_NAME = "commments";
SQLiteDatabase database = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.OPEN_READONLY);

但它没有用。我怎样才能做到这一点?

4

3 回答 3

4

一个人不会简单地打开另一个应用程序的数据库。;)

说真的,出于明显的安全原因(和其他资源原因),默认情况下您不能这样做。如果您明确想要,您可以将数据从一个应用程序公开给其他应用程序。这可以通过以下方式完成:实现 ContentProvider,或者专门使用相同的用户 ID/权限运行您的两个应用程序。

如果您希望任何外部应用程序能够访问您的数据,更典型的方法是使用 ContentProvider。

http://developer.android.com/guide/topics/providers/content-providers.html

更高级的方法,如果您控制需要共享数据的“两个应用程序”,并且您希望禁止任何其他应用程序访问您的数据,您想要使用的方法是指定用户 ID 和过程。一旦到位,您就可以直接共享数据。

http://developer.android.com/guide/topics/manifest/application-element.html#proc

于 2012-10-17T15:06:50.217 回答
1

默认情况下,Sqlite db 在每个项目的私有文件夹中创建,对于其他项目保持隐藏。但是,您可以将 Sqlite 数据库保存在 SD 卡中,因此它将对所有其他项目开放。

是否可以将数据库文件复制到 SD 卡?

于 2012-10-17T15:12:51.790 回答
-2

数据库存储在每个应用程序的私有目录中。有时它甚至是加密的。也许尝试使用超级用户权限。

于 2012-10-17T15:01:46.553 回答