我有一个服务,该服务想从服务启动时从logcat读取数据(即在服务启动之前丢弃logcat数据),实时监视logcat数据,过滤logcat以仅显示“ ActivityManager”的标签,并信息日志。

然后,我想根据过滤后的logcat数据执行某些操作。我尝试了以下操作,但不起作用:

Runtime.getRuntime().exec("logcat -c"); // flush the logcat first
Process process = Runtime.getRuntime().exec("logcat ActivityManager:I"); // filters logcat to only "ActivityManager:I" logs
BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(process.getInputStream()));

StringBuilder log = new StringBuilder();
String line = "";
Log.d(TAG,  "Reading filtered logcat");
while ((line = bufferedReader.readLine()) != null) {
    log.append(line);
}


有谁知道我要去哪里错了?

最佳答案

好的,事实证明我错过了logcat中的-s参数,该参数过滤了logcat输出。

07-27 16:23