繁体   English   中英

如何启动在Android上运行logcat的过程?

[英]How I start a process to run logcat on Android?

我想读取Android系统级别的日志文件,因此我使用以下代码:

        Process mLogcatProc = null;
    BufferedReader reader = null;
    try {
        mLogcatProc = Runtime.getRuntime().exec(
                new String[] { "logcat", "-d",
                        "AndroidRuntime:E [Your Log Tag Here]:V *:S" });

        reader = new BufferedReader(new InputStreamReader(mLogcatProc
                .getInputStream()));

        String line;
        final StringBuilder log = new StringBuilder();
        String separator = System.getProperty("line.separator");

        while ((line = reader.readLine()) != null) {
            log.append(line);
            log.append(separator);
        }

    }

    catch (IOException e) {}
    finally {
        if (reader != null)
            try {
                reader.close();
            } catch (IOException e) {}

    }

我还在AndroidManifest.xml中使用过。 但是我看不懂任何一行。 StringBuilder日志为空。 并且方法mLogcatProc.waitFor返回0。

那么我该如何阅读日志?

无法通过普通(非suid)Android应用程序执行此操作。

这是因为进程需要以root身份运行(或从adb运行)才能读取Android中的logcat文件。 如果您的[rooted]手机上安装了终端模拟器,请尝试运行logcat –除非您以root用户身份登录,否则它将拒绝您对日志缓冲区的许可。

您的StringBuffer最终为空的原因是该进程将错误消息输出到stderr(并且您正在通过BufferedReader读取stdin)。

如果您向AndroidManifest.xml添加正确的权限,则原始帖子中的代码将起作用

 <uses-permission android:name="android.permission.READ_LOGS" />

PS:您必须用实际的TAG替换代码中的“ [此处的日志标签]” ;-)

看看LogCollector的来源,应该可以解决您的问题。 http://code.google.com/p/android-log-collector/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM