android:是否可以检查db是否在其他应用程序中创建

时间:2013-01-16 10:41:47

标签: android sqlite android-contentprovider

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

数据库存储在/data/data/your.applications.package/databases下。通常,此位置只能由用户访问为该应用创建的Android OS。除非设备已植根,否则其他用户无法访问此位置。然后,任何用户都可以访问手机上的任何位置并操纵数据。

因此您可以检查数据库是否存在于此位置

您可以直接查看Android Access Another App's Database

答案 2 :(得分:0)

最好的方法是使用sdcard(或其他一些用户可访问的区域,没有root) 看看这个thread

我知道这是不安全的,但对于这类问题来说这是最好的。一个应用程序(第一个安装)在SD卡上创建数据库。另一个,只检查文件(db)是否已经存在并从现有数据库中读取。

答案 3 :(得分:0)

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

不幸的是,SQLiteOpenHelper仅适用于本地app-directory,但您可以告诉它使用sd-card上的其他目录,如sqliteopenhelper-with-fully-qualified-db-path-name

中所述

答案 4 :(得分: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检查您的应用程序。

:)