我想在 Android 文件系统中搜索包含特定信息(例如,设备的电池电流和电压)的文本文件。
我尝试使用 Astro 文件浏览器,但它的搜索功能似乎不支持深度搜索(也在子目录中搜索)。
我还尝试使用 ADB 将要搜索的目录(/sys/ 目录)复制到我的 PC 硬盘驱动器,但不幸的是,由于缺少读取权限,大多数文件都没有被复制,因此这不起作用。
您是否没有任何可行的解决方案来浏览文件系统(从 PC 或通过 Android 应用程序)?
我想在 Android 文件系统中搜索包含特定信息(例如,设备的电池电流和电压)的文本文件。
我尝试使用 Astro 文件浏览器,但它的搜索功能似乎不支持深度搜索(也在子目录中搜索)。
我还尝试使用 ADB 将要搜索的目录(/sys/ 目录)复制到我的 PC 硬盘驱动器,但不幸的是,由于缺少读取权限,大多数文件都没有被复制,因此这不起作用。
您是否没有任何可行的解决方案来浏览文件系统(从 PC 或通过 Android 应用程序)?
每个制造商将文件放在不同的地方(或至少可以)。尝试使用 API 访问此信息:
有一个意图,ACTION_BATTERY_CHANGED
至于浏览文件系统,Astro 工作正常 - 但如果操作系统没有授予您权限,您将无法读取它,除非您启动手机。
我现在实现了一个简单的、愚蠢的 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(“/”))和表示要查找的文件名的字符串(例如,“电压”)来调用该方法。