在android中执行管道命令?

时间:2012-06-14 09:11:37

标签: android logging android-logcat

我想显示应用程序日志。 在终端上我使用了这个命令:adb logcat -s brief *:V | grep“pid” 它显示我的应用程序日志。

pid表示在logcat表中显示的应用程序pid。

  public static String logProc()
{
     String value = "";
     try
     {
         String cmd[] = {"logcat","-s","brief","*:V","|","grep",
                 android.os.Process.myPid()+""};
         Process p = Runtime.getRuntime().exec(cmd,null, null);
         BufferedReader reader = new BufferedReader(new 
                 InputStreamReader(p.getInputStream()));
         String line = reader.readLine();

         while (line != null)
         {
             value += line + "\n";
             line = reader.readLine();
         }
         p.waitFor();
     }
     catch (IOException e1)
     {
         e1.printStackTrace();
     } 
     catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return value;
}

1 个答案:

答案 0 :(得分:1)

大多数官方Android版本都没有附带grep(编辑:现在更新版本)

如果您需要额外的命令,可以安装busybox - 如果没有root,则必须将其放在备用位置。

您还有另外一个问题,即您正在尝试执行()shell命令以通过管道连接两个程序,除非您执行shell解释器并为其提供该命令,否则这不会起作用。或者您可以自己设置管道并执行两个程序。

但是既然你正在编写一个程序,那么在java代码中进行模式匹配可能会更简单。