2012-04-20 7 views
0

Я искал и нашел следующие коды, которые позволят моей программе читать вывод логарифма в android.However, после того, как я вызываю эту функцию периоидно, ничего не происходит. Ничто не выводится через 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 sion отрицается. Я не хочу, чтобы моя программа получала корневой код previlige –

+1

У вас возникли ошибки в logcat, когда он перестает работать? – dymmeh

+0

@dymmeh нет ошибки на всех. Единственный выход - «logcat called» .... –

ответ

5

попробовать это:

AndroidManifest.xml

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

Получить catlog:

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) { 
} 

вы получите выход как:

09-08 09: 44: 42.267 W/тег (754): Сообщение1
09-08 09: 44: 42,709 W/тег (754): message2
09-08 09: 44: 43,187 W/тег (754): message3
09-08 09: 44: 45,295 E/тег (754): message8

+1

... О, отлично. Дело в том, что я забыл разрешение в XML-файле. Я ненавижу андроид, несколько раз я много времени пытался отладить программу, и, наконец, я нашел, что это было разрешение. Спасибо... –

Смежные вопросы