从应用程序读取logcat无法正常工作

时间:2011-09-19 15:37:21

标签: android java-io

我正在尝试从我的应用程序中的logcat输出中读取。我能够正确阅读,但它继续无限循环阅读。不知怎的,似乎无法检测到流的结束。

不确定我做错了什么。

这是我的代码:

    String baseCommand = "logcat -v time MyTag:D *:S";

    Process process = null;
    try {
        process = Runtime.getRuntime().exec(baseCommand);
        InputStreamReader reader = new InputStreamReader(process.getInputStream());
        BufferedReader bufferedReader = new BufferedReader(reader);
        String line;
        while ((line = bufferedReader.readLine()) != null) {
            Log.d("SomeOtherTag", line); //This line executes endlessly
        }
    } catch (IOException e) {
        Log.e(DEBUG_TAG, "error in logging");
        e.printStackTrace();
    }

2 个答案:

答案 0 :(得分:3)

Logcat不会退出,因此缓冲区被阻止。

使用'logcat -d'转储日志然后退出。

希望这仍然有帮助,Yaron

答案 1 :(得分:1)

不是正面但我认为你需要传递logcat调用,如果它在String []中有args那么它就像

String[] baseCommand = {"logcat", "-v", "time", "MyTag:D", "*:S"};

然后是你的其余代码。

单字符串调用只是程序名称,而不是args。