Читайте логи из кода программно и сопоставляя их со строкой в приложении для 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