Android 为什么可以';t';数据';文件夹是否可以像在DDMS文件资源管理器中一样显示?

Android 为什么可以';t';数据';文件夹是否可以像在DDMS文件资源管理器中一样显示?,android,eclipse,file,ddms,Android,Eclipse,File,Ddms,我通过以下方式列出“/”中的文件: File directory = new File("/"); fill_listview(directory.listFiles()); 我把这些列在清单上: sqlite_stmt_journals config cache sdcard d etc system sys sbin proc init.rc init.goldfish.rc init default.prop data root dev 我有两个问题: 1.为什么我不能像Eclipse

我通过以下方式列出“/”中的文件:

File directory = new File("/");
fill_listview(directory.listFiles());
我把这些列在清单上:

sqlite_stmt_journals
config
cache
sdcard
d
etc
system
sys
sbin
proc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
我有两个问题:

1.为什么我不能像Eclipse DDMS文件浏览器一样访问“/data”文件夹

2.为什么它不同于仅显示以下内容的DDMS:

data
sdcard
system

谢谢

这主要是因为安全问题。如果每个人都可以看到/data文件夹,则某些恶意应用程序可以读取/调整/删除其他应用程序的数据,如果某些应用程序存储一些敏感数据,如密码/信用卡号等,则情况会变得更糟。因此,整个文件系统只能通过调试控制台(或ddms)看到.
您无法访问设备上任何应用程序的数据,除非它是根目录,因为这样做可能会损害系统的完整性,并可能导致奇怪的行为。这意味着您无法访问应用程序的缓存数据/数据库。

在根设备上,您可以这样做以访问/data文件夹:

  • 打开命令
  • 键入“
    adb外壳”
  • su
  • 在设备上按“允许”
  • chmod 777/data/data/data/data/data/com.application.package
  • 转到Eclipse中的DDMS视图

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

    我在非根设备上执行了此操作,并且工作正常

       run-as com.your.package ls -l /data/data/com.your.package
       run-as com.your.package rm /data/data/com.your.package/databases/mydatabase.db
    

    参考资料:

    非常感谢!现在我知道这是因为Android的访问控制。这真的很有帮助。很抱歉,但是是否仍然可以在没有根访问权限的情况下浏览/data文件夹?这使您可以访问应用程序数据文件夹的根,但要访问任何有用的内容,您还需要对子文件夹进行chmod。chmod-R 777/data/data/com.application.packagei如何恢复此操作?