无法在设备上找到apk和数据库文件

时间:2016-04-06 11:33:33

标签: android sqlite

我在android中关注SQLite的简单教程。我在手机和平​​板电脑上尝试了代码,没有崩溃。主要布局就像它应该做的那样。(空活动)。应用程序应该创建数据库。但是,当我检查Android设备管理器文件浏览器时,我看不到“数据/数据”文件夹。相反,我在名为“mnt”的文件夹中看到了我的项目文件夹。我不知道为什么,但包名称是android studio中的com.something.dhbelper,它被保存在那个mnt文件夹中作为com.something.dbhelper1(数字添加到结尾)当我从PC断开手机和TAP我的文件icon在手机上,我看到android / data / data文件夹,我看不到“mnt”文件夹和我的应用程序。但是我的手机上有应用程序的快捷方式,我可以通过点击来运行它。

如何使用Android设备管理器的文件资源管理器查看该文件夹?

你有什么建议?有没有办法搜索,让我们说student.db文件?提前致谢。

3 个答案:

答案 0 :(得分:1)

无法评论,所以我会在这里回答。

在模拟器中尝试。除非已植根,否则您无法访问设备上的这些文件夹。

您可以使用adb pull shell命令将db文件复制到本地计算机上。

http://adbshell.com/commands/adb-pull

答案 1 :(得分:1)

来自Facebook的Stetho允许您使用Chrome开发人员工具查看设备上的数据库(以及其他内容)。它的设置和使用非常简单。 http://facebook.github.io/stetho/

答案 2 :(得分:0)

首先,除非您拥有root权限,否则您无法看到/data/data/内部,因为它不可浏览。但是,您可以通过代码访问它。

mnt的缩写mount出现,因为Android Studio允许浏览路径,包括用于开发目的的db文件。

查看以下代码,将仅可访问但不可浏览的数据库文件复制到您想要的位置。请注意,只有创建数据库的应用程序才有权运行此代码。

File f=new File("/data/data/your.app.package/databases/your_db"); // case-sensitive!
FileInputStream fis=null;
FileOutputStream fos=null;

try
{
  fis=new FileInputStream(f);
  fos=new FileOutputStream("/mnt/sdcard/db_dump.db"); // target location
  while(true)
  {
    int i=fis.read();
    if(i!=-1)
    {fos.write(i);}
    else
    {break;}
  }
  fos.flush();
  Toast.makeText(this, "DB dump OK", Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
  e.printStackTrace();
  Toast.makeText(this, "DB dump ERROR", Toast.LENGTH_LONG).show();
}
finally
{
  try
  {
    fos.close();
    fis.close();
  }
  catch(IOException ioe)
  {}
}

请注意,此代码是从https://stackoverflow.com/a/13154281/361100

复制的