从另一个应用程序访问一个应用程序的数据库

时间:2012-05-23 11:21:21

标签: android android-sqlite android-database

我已经构建了一个应用程序,现在我想使用我的新备份应用程序复制正在运行的应用程序的数据库。我使用以下值通过DB_PATH + DB_NAME创建数据库路径:

DB_PATH = "/data/data/iCam.Cam/";
DB_NAME = "testdb.db";

我有代码将数据库从给定路径复制到SD卡。但是,当我最初使用以下方法检查数据库时,它将返回false

public boolean checkDataBase() {    
    SQLiteDatabase checkDB = null;

    try {
        String myPath = DB_PATH + DB_NAME;
        checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
    } catch (SQLiteException e) {
        e.fillInStackTrace();
        // database does't exist yet.
    }

    if (checkDB != null) {
        checkDB.close();
    }

    return checkDB != null ? true : false;
}

有关如何实现这一目标的任何建议吗?

4 个答案:

答案 0 :(得分:10)

只有在自定义内容提供程序中创建正在运行的应用程序数据库时,才能使用同一数据库。

您无法直接从正在运行的应用程序访问数据库。

但是如果您在自定义内容提供程序中创建正在运行的应用程序数据库,则可以在权限的帮助下直接访问数据库。

在这种情况下,您甚至不需要复制该数据库。

请参阅此link了解自定义内容提供商。

答案 1 :(得分:3)

No

除非应用程序通过ContentProvider为您提供界面,否则您无法访问其他应用程序的数据库。

答案 2 :(得分:2)

使用DDMS可以浏览SQLite数据库,因此请从此链接阅读DDMS教程 http://www.brighthub.com/mobile/google-android/articles/25023.aspx http://www.edumobile.org/android/category/android-beginner-tutorials/

答案 3 :(得分:2)

阅读Android Security. 应用程序存储的任何数据都将被分配该应用程序的用户ID,而其他软件包通常无法访问