我正在开发一个多标签应用程序。在其中一个选项卡中,我想显示 logcat,但我在正确运行它时遇到了很多问题。
现在我正在使用以下命令,但我的 TextView 中没有任何内容。:
Process process = Runtime.getRuntime().exec("/system/bin/logcat -s com.vittorio:I");
但是当我在终端中运行相同的命令时,它可以完美运行。
我也试过这个其他命令:
Process process = Runtime.getRuntime().exec("/system/bin/logcat *:I");
但由于某种原因,它也会打印调试级别的消息......
编辑(1):
我通过在整个日志中添加一个高级过滤器(java)绕过了这个问题。所以我只在我的文本视图中打印我需要的东西。这是一个非常肮脏的解决方案,但目前是我设法提供的唯一一个。
我想指出,我在手机上遇到了不同的行为:
- Galaxy S Plus(root):我可以看到日志。
- Galaxy Y(有根):无日志
- Nexus One(未植根):无日志
编辑 (2) -已解决(需要根电话):
经过一番挣扎,我设法解决了我的问题。实际上,浏览 init.rc 系统文件时,我看到 /dev/log/main 和 /dev/log/system 的权限设置为 620 .. 这就是为什么我无法在某些手机上打开日志的原因。所以我也扎根了我的 Nexus One,并在调用 logcat 命令之前将此命令添加到我的活动中:
Process process_su = Runtime.getRuntime().exec("su");
Process process_ch = Runtime.getRuntime().exec("chmod 777 /dev/log/main");
完毕!:D
希望这些信息能帮助任何将面临同样问题的人。