我在我制作的文件浏览器应用程序中遇到这个奇怪的问题,我无法查看实际存在的每个文件/文件夹。好像他们被过滤掉了。根浏览器似乎找到文件很好,但我的应用程序不能。有任何想法吗?是的,我的手机根深蒂固。
答案 0 :(得分:1)
好吧,我更多地研究了shell命令,这个方法有效,但这是最有效的方法吗?
public void ls(String directory) {
Process process = null;
try {
process = Runtime.getRuntime().exec("ls " + directory);
} catch (IOException e) {
e.printStackTrace();
}
int read;
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
char[] buffer = new char[4096];
StringBuilder output = new StringBuilder();
try {
while ((read = reader.read(buffer)) > 0) {
output.append(buffer, 0, read);
}
} catch (IOException e) {
e.printStackTrace();
}
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d("Files", output.toString());
}
答案 1 :(得分:1)
File
类无效的原因是您没有权限读取这些目录。获取访问权限的唯一方法是读取/写入这些目录是使用root权限 - 并且要使用root权限,必须运行基于linux的命令。
我不知道如何完成整个过程,但您应该使用RootTools
。
通常运行基于linux的命令你会Runtime.getRuntime.exec("command");
,但是使用RootTools,整个过程都是高度简化的,并且更容易获得命令的结果。
如果您愿意我可以尝试进一步解释如何手动执行(执行Runtime.getRuntime.exec("command");
,或者如果您浏览Wiki for RootTools并将其与您的应用程序集成,您可能会想到这一点
如果您还有其他问题,我将很乐意帮助您发挥最佳能力。
修改强> 我看到了你的答案,所以看来你现在对如何运行命令有了很好的理解。但是RootTools会让你更轻松。