6

所以我希望能够编写一个可以打开和显示 logcat 消息、dmesg 的应用程序,并且还能够运行诸如 'ls' 'cat' 'echo' 'cd' 之类的命令。

如果我执行以下操作:

nativeProc = Runtime.getRuntime().exec("ls\n");
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream()));
        BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        String line = null;

        while ((line = in.readLine()) != null) {  
            full = full + "\n" + line;
        }

我可以将文本“完整”放入文本视图并查看根目录。

然而,这就是我能做的。假设我想找到一个目录,然后换到它,我遇到了麻烦。

所以如果我这样做:

nativeProc = Runtime.getRuntime().exec("ls\n");
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream()));
        BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        String line = null;

        while ((line = in.readLine()) != null) {  
            full = full + "\n" + line;
        }
        /* Code here to confirm the existing of a directory*/


        nativeProc = Runtime.getRuntime().exec("cd tmp\n");
        BufferedReader in2 = new BufferedReader(new InputStreamReader(nativeProc.getInputStream()));
        line = null;
        String test = "\nStart1:\n";
        while ((line = in2.readLine()) != null) {  
            test = test + "\n" + line;
        }

“完整”和“文本”我一无所获

有任何想法吗?

4

3 回答 3

4

您可以使用提供的路径执行 ls 应列出的文件夹

Runtime.getRuntime().exec(new String[] { "ls", "\\tmp"});
于 2012-02-27T08:16:55.320 回答
2

当前工作目录与当前进程相关联。当您执行(“cd tmp”)时,您正在创建一个进程,将其目录更改为“tmp”,然后该进程退出。父进程的工作目录不会改变。

有关在 Java 中更改当前工作目录的更一般性讨论,请参阅此内容。

于 2011-01-07T22:53:52.843 回答
1

如何编写一个 shell 文件来检查文件是否存在以及该文件中的所有其他实现,并将其添加到 sdcard 并使用 getRuntimr.exec() 从 java 触发 shell 文件。您也可以将参数传递给它。

于 2012-02-27T07:04:37.113 回答