13

我试图用java获取android shell命令'getprop'的输出,因为getprop()无论如何总是返回null。

我从 developer.android.com 试过这个:

        Process process = null;
    try {
        process = new ProcessBuilder()
           .command("/system/bin/getprop", "build.version")
           .redirectErrorStream(true)
           .start();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

     InputStream in = process.getInputStream();

     //String prop = in.toString();
     System.out.println(in);

     process.destroy();

然而,打印的不是输出,而是一堆字符和数字(现在没有确切的输出)。

我怎样才能得到这个过程的输出?

谢谢!

4

1 回答 1

36

是否有任何特殊原因要将该命令作为外部进程运行?有一个更简单的方法:

String android_rel_version = android.os.Build.VERSION.RELEASE;

但是,如果您真的想通过 shell 命令执行此操作,这是我让它工作的方式:

try {
      // Run the command
      Process process = Runtime.getRuntime().exec("getprop");
      BufferedReader bufferedReader = new BufferedReader(
              new InputStreamReader(process.getInputStream()));

      // Grab the results
      StringBuilder log = new StringBuilder();
      String line;
      while ((line = bufferedReader.readLine()) != null) {
          log.append(line + "\n");
      }

      // Update the view
      TextView tv = (TextView)findViewById(R.id.my_text_view);
      tv.setText(log.toString());
} catch (IOException e) {
}
于 2012-11-22T06:13:59.190 回答