【问题标题】:Reading logcat programmatically with filters使用过滤器以编程方式读取 logcat
【发布时间】:2017-03-22 22:19:44
【问题描述】:

我有以下代码,但它只输出 logcat 的第一行“----beginning of main”,其余的 logcat 没有被捕获。

当我从命令行运行相同的“logcat -d -s myapp:I”时,它会显示几行。

        String command = "logcat -d -s myapp:I";
        Process process = Runtime.getRuntime().exec(command);


        BufferedReader bufferedReader = new BufferedReader(
            new InputStreamReader(process.getInputStream()));
        ArrayList<String> lines = new ArrayList<>();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
          Log.d(TAG, "Reading: " + line); // just prints "----beginning of main"
          lines.add(line);
        }

为什么我得到一行输出?

【问题讨论】:

    标签: java android runtime.exec


    【解决方案1】:

    首先,请注意,在生产环境中运行 logcat 可能不可靠,因为这不是 Android SDK 的一部分。

    除此之外,您只能从自己的应用(以及一小部分系统应用)获取日志消息,因为出于隐私和安全原因,您无权访问所有日志。

    【讨论】:

    • 它不是一个生产应用程序,它用于调试目的。无论哪种方式,您的答案都不是答案
    • @Taranfx:这是一个答案。您没有收到消息的原因是您的进程对它没有收到的消息没有权利。 for nearly five years 就是这种情况。如果您在有根设备上运行,AFAIK 您可以使用su 运行logcat 并获得与从开发机器相同的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多