是否可以检查是否在其他应用程序中创建了数据库?我必须有两个应用程序的通用数据库。如果一个应用程序已经创建了数据库,那么第二个应用程序应该使用第一个应用程序的数据库(我的意思是不应该创建新的)。为此,有没有办法检查是否创建了特定的公共数据库?请帮助我。
5 回答
这并不像您想象的那么容易。即使您明确知道,您的其他应用程序已经创建了数据库,查询它仍然很困难。由于任何 Db 都属于创建它的应用程序,因此通常只有该应用程序可以访问它。好消息是有一种机制,称为ContentProvider。有了它,您可以在应用程序之间共享 db-infos,但要实现这一点需要付出一些努力。
试试下面的代码
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 对您的两个应用程序进行上述检查。
:)
您应该使用 SQLiteOpenHelper 来控制数据库的版本控制,如数据库教程中所述。
不幸的是,SQLiteOpenHelper 仅适用于本地应用程序目录,但您可以告诉它使用 sd 卡上的不同目录,如sqliteopenhelper-with-fully-qualified-db-path-name 中所述
数据库存储在/data/data/your.applications.package/databases
. 通常,该位置只能由为应用程序创建的 Android 操作系统的用户访问。除非设备已获得 root 权限,否则其他用户无法访问此位置。然后任何用户都可以访问手机上的任何位置并操作数据。
所以你可以检查数据库是否存在于这个位置
对你来说最好的事情是使用 sdcard(或其他一些用户可访问的区域,没有 root)看看这个线程
我知道它不安全,但它是解决这类问题的最佳选择。一个应用程序(安装的第一个)在 sdcard 上创建数据库。另一个,只需检查文件(db)是否已经存在并从现有数据库中读取。