在Android Studio中的ADB Shell中执行命令

时间:2017-01-23 17:23:31

标签: java android shell

我正在尝试以编程方式在Android设备上执行一些shell命令。我能够运行一些命令,但无法运行所有命令。作为示例,我能够运行以下命令:

executeCommandLine(“ls”)
executeCommandLine(“netstat –atun”)

但现在我需要运行以下未正确执行的命令:

$ adb push netstat3 /data/local/tmp/
$ adb shell
$ chmod 755 /data/local/tmp/netstat3
$ /data/local/tmp/netstat3

我写了一个函数来在Android中执行上述命令。该函数为“ls”和“netstat -atun”等命令提供了正确的输出,但是没有为下一个命令给出正确的响应。我的executeCommandLine函数如下:

public String executeCommandLine(String commandLine) {
  try {
    Process process;
    process = Runtime.getRuntime().exec(commandLine);

    BufferedReader reader = new BufferedReader(
              new InputStreamReader(process.getInputStream()));
    String read;
    StringBuilder output=new StringBuilder();
    while ((read = reader.readLine())!=null){
        output.append(read);
        output.append("\n");
        Log.d("executed command ", output.toString());
    }
    reader.close();
    process.waitFor();
    return output.toString();
  } catch (IOException e) {
    throw new RuntimeException(e);
  } catch (InterruptedException e) {
    throw new RuntimeException(e);
  }
}

我想知道如何获得所有命令的响应。

1 个答案:

答案 0 :(得分:1)

您可以阅读there

  

Android Debug Bridge(adb)是一个多功能命令行工具,可让您与模拟器实例或连接的Android设备进行通信

您正在尝试在Android设备上执行adb命令,这没有意义,因为adb是在计算机上运行的命令行util并且没有adb在Android设备上。