2011-09-19 56 views
0

我想從我的應用中的logcat輸出讀取。我能夠正確地閱讀,但它繼續無休止地閱讀它。不知何故,似乎沒有辦法檢測到流的結束。從應用中讀取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(); 
    } 

回答

1

並不樂觀,但我相信你需要通過logcat的電話,如果有ARGS在一個String []所以它會是這樣的

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

那麼你的代碼的其餘部分。

單個字符串調用只是程序名稱,而不是參數。

+0

謝謝你讓我知道重載的方法。但是,即使如此,程序在寫出行後似乎仍然掛起。 – OceanBlue

+0

我能想到的唯一其他事情可能是將日誌存儲在列表中,直到您到達最後,關閉流並打印出列表?我有非常相似的代碼,它適用於我。你可以以某種方式添加更多的日誌來打印出Log.d嗎? –

+0

我不這麼認爲。標籤是不同的。在我看來,打印出來後,readline()就在那裏,聽着logcat ... – OceanBlue

3

Logcat不會退出,因此緩衝區被阻止。

使用'logcat -d'爲了轉儲日誌然後退出。

希望這仍然有幫助,亞龍

+0

這是正確的答案。 – Phillip