2016-06-09 3 views
1

Wie können wir lesen Protokolle (verbose, debug usw.) programmgesteuert von Androiden-Klasse und dann nach einer Zeichenfolge suchen oder mit einer bereitgestellten Zeichenfolge in Android übereinstimmen.Logs von Code programmgesteuert lesen und mit einem String in Android-App

Manchmal müssen wir ein System- oder Kernel-Layer-bezogenes Ereignis behandeln. Da wir jedoch nur begrenzten Zugriff auf diesen Code haben, können wir nicht mit ihnen umgehen. Wir können den Logcat über adb sehen und sehen, dass ein Protokoll von der Kernel/Framework-Ebene kommt.

Jetzt ist die Frage, wie wir ein Ereignis in unserer App basierend auf diesen Protokollen überschreiben oder behandeln können?

Antwort

1

Hier ist eine Lösung für dieses Problem von allen Android-App:

Wir müssen wie unter eine Klasse mit einigen Code machen:

public class LogsUtil { 
    private static final String processId = Integer.toString(android.os.Process 
      .myPid()); 

    public static StringBuilder readLogs() { 
     StringBuilder logBuilder = new StringBuilder(); 
     try { 
      String[] command = new String[] { "logcat", "-d", "threadtime" }; 
      Process process = Runtime.getRuntime().exec(command); 
      BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(process.getInputStream())); 

      String line; 
      while ((line = bufferedReader.readLine()) != null) { 
       if (line.contains(processId)) { 
        logBuilder.append(line); 
        //Code here 
       } 
      } 
     } catch (IOException e) { 
     } 
     return logBuilder; 
    } 
} 

Dann schreiben müssen Code unten in unserer Tätigkeit von wo aus wir Überprüfen Sie die Protokolle Zeichenfolge:

//read the logs  
StringBuilder logs = LogsUtil.readLogs(); 

    if(logs.toString().contains("your_text")) 
     //your code 
    else //your code 
Verwandte Themen