为什么Android DDMS文件资源管理器只显示3个目录?

时间:2012-03-12 20:04:57

标签: android adb ddms

为什么Android DDMS文件资源管理器只显示数据,mnt和系统目录?如果我执行“adb shell ls -l”

,还有其他目录和文件

1 个答案:

答案 0 :(得分:2)

我做了一些挖掘,发现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

然后你会进入一个低级shell,就像你的Android设备的终端。在这个级别没有这样的过滤。