为什么Android DDMS文件资源管理器只显示数据,mnt和系统目录?如果我执行"adb shell ls -l",还有其他目录和文件
我做了一些挖掘,发现 ADT 的文件资源管理器视图受到名为的类的限制
com.android.ddmlib.FileListingService
Run Code Online (Sandbox Code Playgroud)
在其中,您将看到已批准的顶级目录的列表:
/** 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,
};
Run Code Online (Sandbox Code Playgroud)
稍后,会查阅此列表,如果它在批准列表中,您将在 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;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您想探索设备的全部内容,您可以通过删除整个代码块来更改代码以批准所有顶级目录。然后您必须重新编译并安装自定义 ADT 插件。
此外,当您执行命令时:
adb shell ls -l
Run Code Online (Sandbox Code Playgroud)
然后您将进入一个低级 shell,它就像 Android 设备中的终端。这个级别没有这样的过滤。