2012-06-14 85 views
1

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

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

@Deepali:问题是它没有显示任何输出。它的连续显示如下日志06-14 15:16:43.104:I/dalvikvm-heap(591):为881344字节的分配增加堆(碎片情况)到4.535MB 06-14 15:16:43.154:D/dalvikvm(591):GC_FOR_MALLOC在37ms中释放了3个对象/ 587632字节 – Deepali

+0

如何以编程方式在android中执行“adb logcat -s brief *:V | grep”pid“”命令 – Deepali

回答

1

大多数官方Android版本不前来使用grep(编辑:更新的版本现在做的)

,如果你想额外的命令,你可以安装busybox的 - 没有根,你就必须把它放在一个备用位置。

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

但是,由于您正在编写程序,因此在java代码中进行模式匹配可能会更简单。