如何访问Android设备中的数据/数据文件夹?

我正在开发一个应用程序,我知道我的数据库*.db将出现在data/data/com.****.***

我可以从Eclipse中的AVD在sqlitepipe理器的帮助下访问这个文件

但是我不能在我的Android手机上访问这个文件。
我谷歌它说,我需要根植我的电话做到这一点,但我不想这样做。 (新手机,保修问题和安全问题)

所以这里是我的问题:我怎样才能访问我的Android手机中的data/data/.....目录“ 没有根植它 ”?

我可以更改目录data/data.....用户权限data/data.....没有根植它?

在手机上直接访问文件很困难,但您可以将它们复制到您的计算机上,在那里您可以随心所欲地执行任何操作。 没有生根你有两个select:

  1. 如果应用程序是可debugging的,则可以在adb shell中使用run-as命令

     adb shell run-as com.your.packagename cp /data/data/com.your.packagename/ 
  2. 或者,您可以使用Android的备份function。

     adb backup -noapk com.your.packagename 

    现在将提示您“解锁设备并确认备份操作”。 最好不要提供密码,否则读取数据变得更加困难。 只需点击“备份我的数据”。 计算机上产生的“backup.ab”文件包含所有android备份格式的应用程序数据。 基本上它是一个压缩的tar文件。 本页说明如何使用OpenSSL的zlib命令来解压缩它。 您可以使用adb restore backup.db命令来恢复备份。

您也可以尝试使用根资源pipe理器应用程序获取数据库。 如果这不起作用,那么你可以试试这个:

  1. 打开cmd
  2. 更改您的目录并进入“平台工具”
  3. input' adb shell '
  4. su
  5. 按设备上的“允许”
  6. chmod 777 /data /data/data /data/data/com.application.package /data/data/com.application.package/*
  7. 在Eclipse中打开DDMS视图,从那里打开“FileExplorer”来获得你想要的文件

在此之后,您应该能够浏览设备上的文件。

要做到上述任何一项(即从您的手机本身访问受保护的文件夹),您仍然需要root权限。 (这包括更改/ data文件夹中的mount-permissions并访问它)

没有root权限,直接访问/data除了从应用程序中通过代码直接读取是不可能的。 因此,您可以尝试将该文件复制到SD卡或某处访问,然后,您应该能够正常访问它。

如果您有开发人员设备,则生根不会使保修失效。 对不起,AFAIK没有其他办法。

  1. 打开你的命令提示符
  2. 将目录更改为E:\ Android \ adt-bundle-windows-x86_64-20140702 \ adt-bundle-windows-x86_64-20140702 \ sdk \ platform-tools
  3. input下面的命令
  4. adb -d shell
  5. run-as com.your.packagename cat databases/database.db > /sdcard/database.db
  6. 将目录更改为cd /sdcard以确保database.db在那里。
  7. adb pull /sdcard/database.db或简单地你可以从设备复制database.db。

最简单的方法(只需一个简单的步骤)就可以使用以下命令/data/data/package.name/databases/file的Android 5.0+设备上的可debugging应用程序文件夹(比如/data/data/package.name/databases/file )中提取文件:

 adb exec-out run-as package.name cat databases/file > file 

在eclipse中使用文件资源pipe理器。 selectWindows =>显示视图=>其他… =>文件资源pipe理器。

另一种方法是通过adb文件拖动:

 adb pull /system/data/data/<yourpackagename>/databases/<databasename> /sdcard 

如果您使用Android Studio 3.0或更高版本,请按照下列步骤操作。

  1. 单击查看 > 工具窗口 > 设备文件资源pipe理器
  2. 展开/ data / data / [package-name]节点。

您只能在非根设备上扩展以debugging模式运行的软件包。

Android Studio 3.0中的步骤

根植设备上,正确的解决scheme是:

 Open cmd Change your directory and go into 'Platform tools' Type 'adb shell' su Press 'Allow' on device chmod 777 /data /data/data /data/data/* Open DDMS view in Eclipse/IntelliJ and from there open 'FileExplorer' to get your desired file 

原来的解决scheme工作,但chmod将返回未知的目录。 将chmod命令更改为/ data / data / *可以访问Intellij中DDMS数据目录中的所有子文件夹。 我假设Eclipse DDMS的解决scheme是相同的。

更新所以,我发现是奇怪的。 我在IntelliJ(Android设备监视器)中使用DDMS运行Nexus 6。 我已经build立了一个小启动应用程序。 所述应用程序将数据保存到data / data / com.example.myapp / files中的.csv文件

当我第一次尝试访问我的Nexus 6上的这个文件,我发现我必须根设备..我可以看到数据文件夹,但试图打开它不会工作。 正如其他地方在网上提到的,扩展+会消失,然后不久再出现(请注意,有networking上的解决scheme,声称允许访问这些文件夹没有生根,我没有发现他们,为时已晚,我不知道是否我更喜欢根不pipe((我宁愿能够手动执行,而不是依靠应用程序或命令提示符给我我的解决scheme)))。 我植根于我的6,并再次尝试DDMS。

在这一点上,它显示了我的数据文件夹,我可以展开文件夹,并看到COM。 目录,但我无法打开任何一个。 那是当我发现上述解决scheme。 最初的说明不适用于这部分:

 chmod 777 /data /data/data /data/data/com.application.pacakage /data/data/com.application.pacakage/* 

那是当我尝试我发布的解决scheme时:

 chmod 777 /data /data/data /data/data/* 

该解决scheme似乎工作,但只在某些文件夹。 我现在可以展开我的myapp文件夹,但无法展开其中的文件目录。

在这一点上,我玩了一会儿,然后想出了为什么不试试我需要的目录,而不是尝试这些通配符条目。

 chmod 777 /data /data/data /data/data/com.example.myapp/* 

其次是:

 chmod 777 /data /data/data /data/data/com.example.myapp/files 

这些命令允许我展开并查看我的应用程序目录中的文件,以确认.csv被正确保存。

希望这有助于某人。 我挣扎了好几个小时!

(在这一点上进一步,奇怪的是,权限没有传递给传递给文件目录的.csv文件,我的文件目录权限读取drwxrwxrwx和我的log.csv文件权限读取-rw-rw — – ..只是fyi)

我也有同样的问题一次。 除了adbshell或生根设备,没有办法直接访问Android设备内的文件。

在这里旁边是02替代品:

1)

  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)试试这个: https : //github.com/sanathp/DatabaseManager_For_Android

其中一个简单的方法是在SD卡上创build数据库。 因为您无法访问您手机的内部存储器中的数据文件夹,除非您的手机是root用户。 那么为什么不简单地在SD卡上创build你的数据库。

而且,如果你愿意,你可以写一些文件复制代码,将现有的数据库文件(从内部存储器)复制到外部存储器而不需要任何根目录。

你可以将这个数据库文件复制到Eclipse的某个地方(例如:SD卡或PC),你可以使用sqlite来访问和更新这个数据库文件。

问题是:如何访问数据文件夹在Android设备?


如果Android设备是Bluestacks *根浏览器APK显示数据/数据/ ..


尝试从https://apkpure.com/root-browser/com.jrummy.root.browserfree下载根浏览器;


如果文件是一个文本文件,你需要点击“打开为”,“文本文件”,“打开为”,“RB文本编辑器”

从Android备份到桌面

打开命令行cmd并运行:adb backup -f C:\ Intel \ xxx.ab -noapk your.app.package 。 不要input密码,然后点击备份我的数据。 确保不要保存在驱动器C根目录下。 你可能会被拒绝。 这就是为什么我保存在C:\ Intel。

提取* .ab文件

  1. 去这里下载: https : //sourceforge.net/projects/adbextractor/
  2. 提取下载的文件并导航到您提取的文件夹。
  3. 用你自己的文件名运行: java -jar abe.jar unpack c:\ Intel \ xxx.ab c:\ Intel \ xxx.tar

可能要访问这个文件夹你需要pipe理权限。

所以你有两个select:

  1. 根源您的设备,并尝试访问此文件夹
  2. 使用模拟器

ps:如果您使用上述两个选项中的任何一个,则可以按照以下步骤访问此文件夹

打开DDMS透视图 – >你的设备 – >(从右侧窗口选项select文件浏览器)select包 – >数据 – >数据 – >包名称 – >文件

从那里你可以拉起你的文件