Запуск команды оболочки на Android ничего не возвращает - PullRequest
0 голосов
/ 29 июня 2019

Я уже несколько часов пытаюсь получить вывод команды, но безрезультатно. Имея этот код:

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 находится в этом месте.

1 Ответ

1 голос
/ 29 июня 2019

Я предполагаю, что произошла ошибка. Вы можете проверить это, установив ProcessBuilder.redirectErrorStream (перед start()), чтобы получить его до заданного inputStream, или просто получив отдельный InputStream для ошибок, вызвав Process.getErrorStream().

Не ясно, чего вы пытаетесь достичь, поэтому трудно дать вам окончательный ответ. Ваш текущий код просто пытается запустить процесс, который находится в /system/bin/ls (из рабочего каталога). Если вы на самом деле пытаетесь запустить ls для каталога /system/bin/, вы захотите отправить каталог в качестве аргумента ProcessBuilder, например:

  val processBuilder = ProcessBuilder("ls", "/system/bin/")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...