0

是否可以检查是否在其他应用程序中创建了数据库?我必须有两个应用程序的通用数据库。如果一个应用程序已经创建了数据库,那么第二个应用程序应该使用第一个应用程序的数据库(我的意思是不应该创建新的)。为此,有没有办法检查是否创建了特定的公共数据库?请帮助我。

4

5 回答 5

1

这并不像您想象的那么容易。即使您明确知道,您的其他应用程序已经创建了数据库,查询它仍然很困难。由于任何 Db 都属于创建它的应用程序,因此通常只有该应用程序可以访问它。好消息是有一种机制,称为ContentProvider。有了它,您可以在应用程序之间共享 db-infos,但要实现这一点需要付出一些努力。

于 2013-01-16T10:52:05.450 回答
0

试试下面的代码

DB_PATH = "/data/data/THE_PACKAGE_NAME/databases/";
DB_NAME="YOUR_DB_NAME";
File dbFile = new File(DB_PATH + DB_NAME);
if(dbFile.exists()){
/* YOUR CODE HERE*/
}

在创建数据库之前,请使用 PACKAGE NAME 对您的两个应用程序进行上述检查。

:)

于 2013-01-16T11:13:56.247 回答
0

您应该使用 SQLiteOpenHelper 来控制数据库的版本控制,如数据库教程中所述。

不幸的是,SQLiteOpenHelper 仅适用于本地应用程序目录,但您可以告诉它使用 sd 卡上的不同目录,如sqliteopenhelper-with-fully-qualified-db-path-name 中所述

于 2013-01-16T11:06:54.617 回答
0

数据库存储在/data/data/your.applications.package/databases. 通常,该位置只能由为应用程序创建的 Android 操作系统的用户访问。除非设备已获得 root 权限,否则其他用户无法访问此位置。然后任何用户都可以访问手机上的任何位置并操作数据。

所以你可以检查数据库是否存在于这个位置

你可以直接检查这个Android Access Another App's Database

于 2013-01-16T10:49:06.097 回答
0

对你来说最好的事情是使用 sdcard(或其他一些用户可访问的区域,没有 root)看看这个线程

我知道它不安全,但它是解决这类问题的最佳选择。一个应用程序(安装的第一个)在 sdcard 上创建数据库。另一个,只需检查文件(db)是否已经存在并从现有数据库中读取。

于 2013-01-16T10:54:31.077 回答