0

我想在 Android 文件系统中搜索包含特定信息(例如,设备的电池电流和电压)的文本文件。

我尝试使用 Astro 文件浏览器,但它的搜索功能似乎不支持深度搜索(也在子目录中搜索)。

我还尝试使用 ADB 将要搜索的目录(/sys/ 目录)复制到我的 PC 硬盘驱动器,但不幸的是,由于缺少读取权限,大多数文件都没有被复制,因此这不起作用。

您是否没有任何可行的解决方案来浏览文件系统(从 PC 或通过 Android 应用程序)?

4

2 回答 2

1

每个制造商将文件放在不同的地方(或至少可以)。尝试使用 API 访问此信息:

有一个意图,ACTION_BATTERY_CHANGED

BatteryManager

至于浏览文件系统,Astro 工作正常 - 但如果操作系统没有授予您权限,您将无法读取它,除非您启动手机。

于 2011-08-24T14:40:43.617 回答
1

我现在实现了一个简单的、愚蠢的 Java 方法,可以从 Eclipse ADT 执行以在文件系统中搜索并且它可以工作(但是,速度很慢):

public static List<File> getFilesOfDirectory(File dir, String fileNamePart) {

    List<File> result;

    if (dir.exists() && dir.isDirectory()
            && !dir.getAbsolutePath().contains("root")
            && dir.getAbsolutePath().split("/").length < 10) {
        Log.i("fileSearch", "search in directory " + dir.getAbsolutePath());
        File[] files = dir.listFiles();

        if (files != null)
            result = new ArrayList<File>(Arrays.asList(files));
        else
            result = new ArrayList<File>();
    }

    else
        result = Collections.emptyList();

    /* Filter for interesting files. */
    List<File> filteredResult = new ArrayList<File>();
    for (File file : result) {
        if (file.getAbsolutePath().toLowerCase()
                .contains(fileNamePart.toLowerCase()))
            filteredResult.add(file);
        // no else.
    }

    /* Search recursively. */
    List<File> furtherResults = new ArrayList<File>();
    for (File file : result) {
        if (file.isDirectory())
            furtherResults.addAll(getFilesOfDirectory(file, fileNamePart));
        // no else.
    }
    // end for.

    filteredResult.addAll(furtherResults);

    return filteredResult;
}

可以使用表示要搜索的根目录的文件对象(例如,new File(“/”))和表示要查找的文件名的字符串(例如,“电压”)来调用该方法。

于 2011-08-25T09:00:34.377 回答