【发布时间】:2012-03-12 20:04:57
【问题描述】:
为什么 Android DDMS 文件资源管理器只显示数据、mnt 和系统目录?如果我执行“adb shell ls -l”还有其他目录和文件
【问题讨论】:
-
您到底在寻找什么数据?
-
一个例子可以是缓存目录。
为什么 Android DDMS 文件资源管理器只显示数据、mnt 和系统目录?如果我执行“adb shell ls -l”还有其他目录和文件
【问题讨论】:
我做了一些挖掘,发现 ADT 的文件资源管理器视图受到一个名为
的类的限制com.android.ddmlib.FileListingService
在其中,您将看到已批准的顶级目录列表:
/** Top level data folder. */
public final static String DIRECTORY_DATA = "data"; //$NON-NLS-1$
/** Top level sdcard folder. */
public final static String DIRECTORY_SDCARD = "sdcard"; //$NON-NLS-1$
/** Top level mount folder. */
public final static String DIRECTORY_MNT = "mnt"; //$NON-NLS-1$
/** Top level system folder. */
public final static String DIRECTORY_SYSTEM = "system"; //$NON-NLS-1$
/** Top level temp folder. */
public final static String DIRECTORY_TEMP = "tmp"; //$NON-NLS-1$
/** Application folder. */
public final static String DIRECTORY_APP = "app"; //$NON-NLS-1$
private final static String[] sRootLevelApprovedItems = {
DIRECTORY_DATA,
DIRECTORY_SDCARD,
DIRECTORY_SYSTEM,
DIRECTORY_TEMP,
DIRECTORY_MNT,
};
稍后,此列表被查阅,如果它在批准列表中,您将在 Eclipse 的文件资源管理器中看到它:
// if the parent is root, we only accept selected items
if (mParentEntry.isRoot()) {
boolean found = false;
for (String approved : sRootLevelApprovedItems) {
if (approved.equals(name)) {
found = true;
break;
}
}
// if it's not in the approved list we skip this entry.
if (found == false) {
continue;
}
}
因此,如果您想探索设备的全部内容,您可以通过删除整个代码块来更改代码以批准所有顶级目录。然后您必须重新编译并安装您的自定义 ADT 插件。
另外,当你执行命令时:
adb shell ls -l
然后您将进入一个低级外壳,就像您的 Android 设备的终端一样。此级别没有此类过滤。
【讨论】: