[英]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.