【问题标题】:How to get android system log from a Java program如何从 Java 程序中获取 android 系统日志
【发布时间】:2010-08-25 00:10:42
【问题描述】:

有谁知道如何使用 Java 以编程方式获取 android 设备系统日志?这类似于 Dalvik 调试监视器下方面板上可用的内容。

提前致谢。

【问题讨论】:

  • 您希望从您的 android 应用程序内部还是从外部输出此访问日志?您使用的是模拟器还是设备?

标签: java android logging


【解决方案1】:

未使用“adb shell logcat”测试,但我已使用它通过 adb 获取其他内容:

public static String[] getAdbLogCat() {

    try {
        Process p = Runtime.getRuntime().exec("/path/to/adb shell logcat");
        InputStream is = p.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);

        final StringBuffer output = new StringBuffer();
        String line;
        ArrayList<String> arrList = new ArrayList<String>();
        while ((line = br.readLine()) != null) {
            System.out.println(line);
        }
        return (String[])arrList.toArray(new String[0]);
    } catch (IOException e) {
        System.err.println(e);
        e.printStackTrace();
        return new String[]{};
    }
}

【讨论】:

  • 感谢 Mathias,这正是我所需要的 :) 你太棒了!
  • 只是为了快速了解一下,'adb shell logcat' 工作得很好,'adb logcat' 也是如此 :)
  • 您的代码中有几个小错误,但除此之外,当我让其他一切正常工作时,我得到了这个错误:无法运行程序“adb”:错误=13,权限被拒绝环顾 StackOverflow和网络上的其他地方,似乎这只适用于有根设备,这意味着它几乎不能在任何设备上运行。有没有不需要root权限就可以获取日志的方法?
  • 我想出了如何让它工作。请看我的回答。
【解决方案2】:

我从上面的 Mathias Conradt 的回答开始。它对我不起作用,但是在使用了很长时间之后,我发现需要进行哪些调整才能使其正常工作。这将起作用。它不需要 root 访问权限、特殊权限或任何东西。

private static String getAdbLogCat()
{
    String log = "";
    String str;
    try
    {
        String myStringArray[]= {"logcat", "-d"};
        Process process = Runtime.getRuntime().exec(myStringArray);
        InputStream is = process.getInputStream();
        InputStreamReader isr = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(isr);
        str = br.readLine();
        while (str != null)
        {
            log += str;
            str = br.readLine();
        }
    }
    catch (IOException e)
    {
    }
    return log;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2014-09-21
    • 2017-08-27
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    相关资源
    最近更新 更多