猿问

在 Android 上运行 shell 命令不返回任何内容

几个小时以来,我一直在尝试获取命令的输出,但没有结果。有这个代码:


val byteArry = ByteArray(1024)

 var Holder: String = ""

 try {

      val processBuilder = ProcessBuilder("/system/bin/ls")

      val process = processBuilder.start()

      val  inputStream = process.getInputStream()

      while (inputStream.read(byteArry) !== -1) {

            Holder += String(byteArry)

      }

      inputStream.close()

      } catch (ex: IOException) {

        ex.printStackTrace()

      }

      println("Output: " + Holder)

我正在尝试使用不同的(kotlin 和 java)方法从任何命令接收一些输出,但我什么也没收到。也没有错误。使用 Android Studio 中的文件资源管理器,我可以看到 ls 位于该位置。


小唯快跑啊
浏览 164回答 1
1回答

沧海一幻觉

我猜发生了错误。ProcessBuilder.redirectErrorStream您可以通过设置(之前)来检查它以start()使其达到给定inputStream,或者通过调用来简单地获取一个单独的InputStream错误Process.getErrorStream()。目前尚不清楚您要实现的目标,因此很难给您明确的答案。您当前的代码只是试图运行位于/system/bin/ls(来自工作目录)的进程。如果您实际上正在尝试ls为目录运行/system/bin/,您将希望将目录作为参数发送给ProcessBuilder,如下所示:  val processBuilder = ProcessBuilder("ls", "/system/bin/")
随时随地看视频慕课网APP

相关分类

Java
我要回答