以编程方式从代码中读取日志并与android app中的字符串匹配

时间:2016-06-09 08:27:40

标签: android logging event-handling

我们如何从android类以编程方式读取日志(详细,调试等),然后在android中搜索字符串或与提供的字符串匹配。

有时我们需要处理一些系统或内核层相关的事件。但由于我们对这些代码的访问权限有限,我们无法处理它们。我们可以通过adb看到logcat,还可以看到一些来自内核/框架层的日志。

现在问题是,我们如何根据这些日志覆盖或处理我们应用中的某些事件?

1 个答案:

答案 0 :(得分: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