4

问这个问题我几乎感到尴尬,但我真的无法在手机上找到我的应用程序。我读到该应用程序应该安装在 /data/data/ 文件夹中,但在 Astro 中查看时,我的 /data 文件夹似乎是空的。我的应用程序肯定安装在手机上,我应该将其传输到 SD 以使其可见吗?我在 Orange UK 上有一个无根的 HTC Desire HD。我只需要看看我的应用程序管理的 SQLite 数据库。

4

3 回答 3

11

问这个问题我几乎感到尴尬,但我真的无法在手机上找到我的应用程序。

在“设置”>“应用程序”中查找它以查看它是否已安装。如果是,您在LAUNCHER类别 (action MAIN) 中声明的任何活动都将出现在主屏幕启动器中。

我读到该应用程序应该安装在 /data/data/ 文件夹中,但在 Astro 中查看时,我的 /data 文件夹似乎是空的。

您无权在无根电话上查看该目录。

我的应用程序肯定安装在手机上,我应该将其传输到 SD 以使其可见吗?

您的应用将不再“可见”。

我只需要看看我的应用程序管理的 SQLite 数据库。

向您的应用程序添加备份/恢复功能,将您的 SQLite 文件复制到/从外部存储。不过,请确保SQLiteDatabase首先关闭所有对象。

于 2011-01-29T19:03:33.953 回答
7

简单的答案是,

  • 如果您需要在实际手机中浏览“数据”目录,它应该是一个root设备。
  • 您可以简单地浏览模拟器中的“数据”目录,因为模拟器充当根设备,并且具有所有超级用户访问权限。

快乐编码!!!

更新

还有另一种方法是从下面的功能将数据库复制到您的 SD 卡,

public void exportDatabse(String databaseName) {
    try {
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
            String backupDBPath = "backupname.db";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(sd, backupDBPath);

            if (currentDB.exists()) {
                FileChannel src = new FileInputStream(currentDB).getChannel();
                FileChannel dst = new FileOutputStream(backupDB).getChannel();
                dst.transferFrom(src, 0, src.size());
                src.close();
                dst.close();
            }
        }
    } catch (Exception e) {

    }
}
于 2013-02-20T07:06:26.977 回答
0

如果您的应用程序是可调试的 ( ),则不需要 root,请参阅如何真实设备中查看我的应用程序的 sqlite db 的内容?android:debuggable="true"

于 2013-01-29T16:00:29.587 回答