我的应用在哪里? / data显示为空

时间:2011-01-29 18:53:42

标签: android sd-card

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

3 个答案:

答案 0 :(得分:11)

  

我几乎感到很尴尬,但我真的找不到我手机上的应用程序了。

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

  

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

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

  

我的应用程序绝对安装在手机上,我应该将其转移到SD才能看到它吗?

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

  

我只需要看看我的App管理的SQLite数据库。

为您的应用添加备份/还原功能,将SQLite文件复制到外部存储或从外部存储复制。但请确保先关闭所有SQLiteDatabase个对象。

答案 1 :(得分:7)

简单的答案是,

  • 如果您需要浏览实际手机中的“数据”目录,则应该是 rooted 设备。
  • 您只需浏览模拟器中的“数据”目录,因为,模拟器充当有根设备,并且具有所有超级用户访问权限。

快乐的编码!!!

<强>更新

通过以下功能将数据库复制到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) {

    }
}

答案 2 :(得分:0)

如果您的应用程序是可调试的,则

root android:debuggable="true")请参阅How can I see the contents of a sqlite db of my app in a real device?