以编程方式读取logcat与过滤器
问题描述:
我有下面的代码,但它只输出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);
}
为什么我会得到一个线路输出?
答
首先,请注意在生产中运行logcat
可能不可靠,因为这不是Android SDK的一部分。
除此之外,出于隐私和安全原因,您只会从自己的应用程序(以及系统的一小部分子系统)获取日志消息,因为您无权访问所有日志。
它不是一个生产应用程序,它用于调试目的。无论哪种方式你的答案不是答案 – Taranfx
@Taranfx:这是一个答案。您没有收到邮件的原因是您的过程没有权限收到它没有收到的邮件。 [近五年来一直如此](https://commonsware.com/blog/2012/07/12/read-logs-regression.html)。如果你运行的是root设备,AFAIK你可以使用'su'来运行'logcat'并获得与开发机器相同的内容。 – CommonsWare