DDMS文件浏览器无法访问数据\数据(HTC Desire HD)

时间:2011-02-08 16:08:52

标签: android sqlite ddms

我正在研究一些SQLite代码,并希望检查数据库。如果我在模拟器上运行代码,我可以使用DDMS文件管理器从data \ data \ myProject \ databases中提取文件,但如果我在实际硬件上运行它,则无法访问data \ data文件夹。除了获得手机的root权限之外,还有其他方法吗?

5 个答案:

答案 0 :(得分:19)

SQLIte数据库实际上只是一个存储在手机内存中的文件,您可以将其复制到手机SD卡中,然后通过PC轻松访问它。以下是完全符合您需求的功能。在使用函数之前,请确保更改包名称和数据库名称。

public static void backupDatabase() throws IOException {
    //Open your local db as the input stream
    String inFileName = "/data/data/your.package.name/databases/database.sqlite";
    File dbFile = new File(inFileName);
    FileInputStream fis = new FileInputStream(dbFile);

    String outFileName = Environment.getExternalStorageDirectory()
                                                    + "/database.sqlite";
    //Open the empty db as the output stream
    OutputStream output = new FileOutputStream(outFileName);
    //transfer bytes from the inputfile to the outputfile
    byte[] buffer = new byte[1024];
    int length;
    while ((length = fis.read(buffer))>0){
        output.write(buffer, 0, length);
    }
    //Close the streams
    output.flush();
    output.close();
    fis.close();
}

您可以从代码中看到,数据库始终存储在文件夹中:

/data/data/your.package.name/databases/

名称(在我们的示例中为“database.sqlite”)是您在扩展SQLiteOpenHelper时选择的名称。显然,您还需要将“your.package.name”替换为应用程序包的名称。

答案 1 :(得分:2)

使用

将文件复制到/ mnt / sdcard
cp /data/data/<packagename>/databases/<dbname>/<filename> /mnt/sdcard 

使用adb,然后使用

从/ mnt / sdcard复制到桌面
adb pull /mnt/sdcard/<filename> 

然后使用sqlite3查看它。

答案 2 :(得分:2)

您必须根设备。转到命令提示符并转到adb所在的位置。

e.g。

  

C:\ Program Files \ Android \ android-sdk \ platform-tools

输入adb root。现在转到文件资源管理器并查看。

答案 3 :(得分:1)

我相信您的应用程序可以更改其本地存储数据文件的unix权限,以便其他应用程序和adb可以访问它们。

但是,您的应用程序无法更改安全手机的/ data目录中缺少列表权限。

因此,您必须使用'adb pull / full / path / to / file'来获取文件 - 您无法浏览到它,因为您无法生成/ data或其他几个中间目录父项的列表你的档案。

答案 4 :(得分:1)

关于这个问题的唯一方法就是将文件放在一些可以在开发过程中像SD卡上访问它的地方。然后,一旦你感到满意,就可以正确地将文件放在任何你想要的地方。

我之所以这么说,是因为我有零售商Nexus One和开发商Nexus One。在使用DDMS文件资源管理器时,我注意到我可以浏览开发人员设备上的数据文件夹,但无法在零售设备上浏览。我扎根我的零售设备并没有帮助。

所以我想在这个问题上需要做更多的研究。但在那之前,我希望这会有所帮助。