2

我正在开发一个需要 root 的 Android 应用程序。它使用 root 访问一些内部内存的东西,然后我调用ls一个目录。然后我从中读取,如果有数据,效果很好,但如果目录为空,应用程序就会挂起。有没有解决这个问题的好方法?

这是代码

    final Runtime runtime = Runtime.getRuntime();
            try {
                // Perform su to get root privileges
                Process p = runtime.exec("su");
                DataOutputStream output = new DataOutputStream(p.getOutputStream());
                output.writeBytes("ls " + directoryPath + "\n");
                output.flush();
                InputStream stdout = p.getInputStream();
                byte[] buffer = new byte[1024];
                int read;
                String out = new String();
                while(true){
                    //If ls found no files it hangs on this line
                    read = stdout.read(buffer);
                    out += new String(buffer, 0, read);
                    if(read < 1024){
                        break;
                    }
                }
            }
4

1 回答 1

2

以下对我有用:请参阅我的流程助手,然后例如

Pair<Integer, String> ret = ProcessHelper.runCmd(true, "su", "-c", "ls -l");
于 2013-03-27T21:34:33.793 回答