Читайте логи из кода программно и сопоставляя их со строкой в ​​приложении для Android

Как мы можем программно читать логи (подробные, отладочные и т. Д.) Из класса Android, а затем искать строку или совпадать с предоставленной строкой в ​​Android.

Иногда нам нужно обработать какое-либо событие, связанное с системным уровнем или уровнем ядра. Но так как у нас ограниченный доступ к этому коду, мы не можем их обработать. Мы можем увидеть logcat через adb, а также увидеть, что некоторые журналы поступают из уровня ядра / фреймворка.

Теперь возникает вопрос: как мы можем переопределить или обработать какое-то событие в нашем приложении на основе этих журналов?

1 ответ

Вот решение этого из любого приложения для Android:

Нам нужно сделать класс с некоторым кодом, как показано ниже:

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;
    }
}

Затем нужно написать код ниже в нашей деятельности, откуда мы должны проверить строку журналов:

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

    if(logs.toString().contains("your_text"))
        //your code
    else //your code
Другие вопросы по тегам