【问题标题】:Accessing the database of one application from another application从另一个应用程序访问一个应用程序的数据库
【发布时间】:2012-05-29 22:32:32
【问题描述】:

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

关于如何实现这一点的任何建议?

【问题讨论】:

  • @Rasel 的回答是正确的。您应该使用实际应用程序中的 contentProvider 来共享您的数据库控制。为什么还要复制它??
  • 我想复制它,因为我的应用程序将数据库发送到服务器,但它当前没有发送一些要上传到网络的数据,所以我需要将该数据库复制到 sd 卡以便我可以发送通过邮件

标签: android android-sqlite android-database


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:
    No
    

    你不能访问其他应用程序的数据库,除非应用程序通过 ContentProvider 给你接口。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我要把这个设置交给我的远程客户端
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-25
        • 2020-12-26
        • 2021-01-15
        • 2017-09-01
        • 2015-06-27
        • 2015-05-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多