logcat给出空缓冲区

时间:2015-04-08 06:14:49

标签: android logcat

我跑:

Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader buffuerReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

为了读取logcat,但它以某种方式返回一个空缓冲区:

bufferReader

查看buf

empty buf

(它是空的)

请注意,在eclipse中它不是空的。另外,如果我从logcat -d(即cmd:adb shell)运行adb shell logcat -d,它也不是空的。

1 个答案:

答案 0 :(得分:0)

我正在处理类似的事情,我发现自从JellyBean你需要root访问权限或权限android.permission.READ_LOGS,它只能授予常规设备上的系统应用程序,以便读取外部的日志文件ADB。

因此,如果/有了root设备,您可以:

1)在清单中添加权限,并使用adb shell通过以下命令授予权限:

pm grant <package name> android.permission.READ_LOGS

请注意,您可能需要在授予权限后重新启动应用程序。

2)执行命令以root身份运行时使用su

Process process = Runtime.getRuntime().exec("su logcat -d");

使用这两种方法之一,您应该能够从logcat命令获取输出。我在我的应用程序中使用了后一种方法,它对我有用。

希望它有所帮助!