Java 使用进程构建器执行 Adb 命令时出错

Java getting error while executing Adb Commands using process builder

执行以下行时出现响应错误=>分段错误

 String[] commands = {"cmd.exe","/c","adb shell","su","cd /data/app","ls com.mypack*"};
 StringBuilder cmdReturnRsp = new StringBuilder();
 try {
        ProcessBuilder processBuilder = new ProcessBuilder(commands);
        processBuilder.directory(fileADb);
        Process process = processBuilder.start();
        InputStream inputStream = process.getInputStream();
        int c;
        while ((c = inputStream.read()) != -1) {
               cmdReturnRsp.append((char) c);
        }
        System.out.println("responce = "+ cmdReturnRsp);
  }catch(Exception e){

  }

但是当在 cmd 提示符上方 运行 行时它工作正常,那么如何使代码与 cmd

一样工作

/c 我猜是不理解的。 应该是 cd c:/

您对进程生成器的理解有误。我似乎认为它是一种脚本。这是错误的。 Process builder 只是构建正确的命令行并执行它。

因此,您可以 运行 cmd.exe,您可以 运行 cmd.exe /c adb shell,但我怀疑您是否可以 运行 其余命令。

查看 adb 的描述。如果它支持类似于 cmd /c 的模式,即在命令行中获取命令然后执行它,你可能可以这样做。

顺便说一句,你为什么要这样做?

检查设备是否已root,通常当设备未root时,它不起作用。