2017-03-22 49 views
0

我有下面的代码,但它只输出logcat的“----初始主”的第一行,logcat的其余部分未被捕获。以编程方式读取logcat与过滤器

当我从命令行运行相同的“logcat -d -s myapp:I”时,它显示了多行。

 String command = "logcat -d -s myapp:I"; 
     Process process = Runtime.getRuntime().exec(command); 


     BufferedReader bufferedReader = new BufferedReader(
      new InputStreamReader(process.getInputStream())); 
     ArrayList<String> lines = new ArrayList<>(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      Log.d(TAG, "Reading: " + line); // just prints "----beginning of main" 
      lines.add(line); 
     } 

为什么我会得到一个线路输出?

回答

0

首先,请注意在生产中运行logcat可能不可靠,因为这不是Android SDK的一部分。

除此之外,出于隐私和安全原因,您只会从自己的应用程序(以及系统的一小部分子系统)获取日志消息,因为您无权访问所有日志。

+0

它不是一个生产应用程序,它用于调试目的。无论哪种方式你的答案不是答案 – Taranfx

+0

@Taranfx:这是一个答案。您没有收到邮件的原因是您的过程没有权限收到它没有收到的邮件。 [近五年来一直如此](https://commonsware.com/blog/2012/07/12/read-logs-regression.html)。如果你运行的是ro​​ot设备,AFAIK你可以使用'su'来运行'logcat'并获得与开发机器相同的内容。 – CommonsWare

相关问题