6

我已经构建了一个应用程序,现在我想使用我的新备份应用程序复制该正在运行的应用程序的数据库。我通过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

4 回答 4

10

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

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

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

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

请参阅此链接以获取自定义内容提供程序。

于 2012-05-23T11:31:18.517 回答
4
No

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

于 2012-05-23T11:26:20.937 回答
2

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

于 2012-05-23T11:25:50.873 回答
2

阅读安卓安全。 应用程序存储的任何数据都将分配给该应用程序的用户 ID,并且通常不能被其他包访问

于 2012-05-23T11:28:23.057 回答