2017-03-22 79 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

相關問題