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

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

但是我的安卓手机无法访问这个文件。 我谷歌了一下,它说我需要在我的手机上查找,但我不想这样做。

我如何访问我的data/data/.....目录在我的安卓手机“没有根它”?

是否可以更改目录data/data.....的用户权限没有生根?


当前回答

在根设备上,正确的解决方案是:

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

原来的解决方案是可行的,但是chmod将返回未知的目录。将chmod命令更改为/data/data/*可以从Intellij中的DDMS访问data目录中的所有子文件夹。我假设同样的解决方案也适用于Eclipse DDMS。

更新 我的发现很奇怪。我正在IntelliJ (Android设备监视器)中使用DDMS运行Nexus 6。我已经构建了一个小入门应用程序。该应用程序将数据保存到data/data/com.example.myapp/files中的.csv文件

When I first started to try to access this file on my Nexus 6, I found that I have to root the device.. I could see the data folder, but trying to open it would not work. As mentioned online in other places, the expand + would vanish then reappear shortly thereafter (note, there are solutions on the web that claim to allow access to these folders without rooting, I didn't find them till too late, and I'm not sure if I prefer not to root anyway ((I'd rather be able to do it manually than rely on an app or command prompt to give me my solutions))). I rooted my 6 and tried DDMS again.

在这一点上,它显示了数据文件夹,我可以展开文件夹,看到com。目录,但我无法打开任何一个。就在那时,我发现了上面的解决方案。最初的说明对这部分不起作用:

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

就在那时,我尝试了我发布的解决方案:

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

这个解决方案似乎是可行的,但只适用于某些文件夹。我现在可以展开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---- ..仅供参考)

其他回答

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

如果没有root,除了通过代码从应用程序内部读取外,直接访问/数据是不可能的。所以你可以试着把那个文件复制到sdcard或者其他可以访问的地方,然后,你就可以正常访问它了。

如果您使用的是开发人员设备,那么root不会使您的保修失效。对不起,我没有别的办法了。

使用eclipse中的文件资源管理器。Select Windows => Show View => Other…>文件资源管理器。

另一种方法是通过adb提取文件:

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

如果你使用的是Android Studio 3.0或更高版本,请遵循以下步骤。

单击“查看>工具Windows >设备文件资源管理器”。 展开/data/data/[package-name]节点。

只能展开在非根设备上以调试模式运行的包。

你可以复制这个db文件到eclipse资源管理器的某个地方(例如:sdcard或PC),你可以使用sqlite访问和更新这个db文件。

可能要访问这个文件夹需要管理员权限。

所以你有两个选择:-

根您的设备,然后尝试访问此文件夹 使用模拟器

附注:如果您正在使用上述两个选项中的任何一个,您可以通过以下步骤访问此文件夹

打开DDMS透视图->您的设备->(选择文件资源管理器从 右窗口选项)选择package -> data -> data -> package name - >文件

从那里你可以调出你的文件