2012-04-20 104 views
0

我已經搜索了,我發現下面的代碼會讓我的程序讀取android中logcat的輸出。但是,在我調用這個函數之後,沒有任何反應。沒有任何東西通過system.out輸出,除了「logcat called」 。我真的不知道發生了什麼,因爲很多帖子在這裏告訴這將工作:<爲什麼我不能在程序中讀取logcat輸出?

public void Collector_logcat(){ 


    String stringbuffer=""; 
    String command="logcat -d"; 
    String command_c="logcat -c"; 
    System.out.println("logcat called\n"); 
    try{ 
     m_logcatprocess=Runtime.getRuntime().exec(command); 
     m_logcat_inputreader=new InputStreamReader(m_logcatprocess.getInputStream()); 
     m_logcat_reader=new BufferedReader(m_logcat_inputreader); 
     while((stringbuffer=m_logcat_reader.readLine())!=null){ 
      System.out.println(stringbuffer+"\n"); 
     } 

     Runtime.getRuntime().exec(command_c); 

    } 

     catch(Exception ex){ 
      System.out.println(ex.getMessage()); 
      System.out.println("error in Collector_logcat\n"); 
     } 

    return ; 

    } 
+0

如果我嘗試直接讀取/ dev/log/main文件,它顯示permis錫永被拒絕。我不希望我的程序獲得root previlige – 2012-04-20 15:38:00

+1

logcat在停止工作時是否出現錯誤? – dymmeh 2012-04-20 15:41:35

+0

@dymmeh沒有任何錯誤。唯一的輸出是「logcat called」.... – 2012-04-20 15:44:28

回答

5

試試這個:

AndroidManifest.xml中

<uses-permission android:name="android.permission.READ_LOGS" /> 

獲取目錄下載:

try { 
    ArrayList<String> commandLine = new ArrayList<String>(); 
commandLine.add("logcat"); 
    commandLine.add("-d"); 
    commandLine.add("-v"); 
    commandLine.add("time"); 
    commandLine.add("-s"); 
    commandLine.add("tag:W"); 
    Process process = Runtime.getRuntime().exec(commandLine.toArray(new String[commandLine.size()])); 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()), 1024); 
    String line; 
    while ((line = bufferedReader.readLine()) != null) { 
     log.append(line); 
     log.append("\n") 
    } 
} catch (IOException e) { 
} 

你會得到輸出:

9月9日至8日:44:42.267 W /標籤(754):MESSAGE1
9月9日至8日:44:42.709 w^/標籤(754):消息2
9月9日至8日:44:43.187 W /標籤(754):消息3
9月9日至8日:44:45.295 E /標籤(754):message8

+1

...哦,太棒了。重點是我忘記了xml文件的權限。我討厭android,好幾次我花了很多時間試圖調試這個程序,最後我發現它是權限。謝謝... – 2012-04-20 16:13:42

相關問題