启动了logcat进程,我没有收到任何错误或强行关闭。它似乎不会产生任何输出。
String commandLine = "logcat -v time -b main *:V";
String line;
try {
process = Runtime.getRuntime().exec(commandLine);
bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while(!mStop && (line = bufferedReader.readLine()) != null && newMessages.size() < maxMessages) {
// It does not reach this point
// Debugger shows
// mStop == false
// newMessages.size == 0
// maxMessages == 5000
// line == null
怀疑是logcat退出而没有打印任何东西。我在命令行中尝试了这个,它确实输出了logcat消息。
我将logcat
替换为ls
,然后bufferedReader填充line
。
对bufferedReader
的检查显示成员in
(InputStreamReader)本身在readLine()之前有一个成员endOfInput
false 并且变为真实紧随其后。
最新消息: 我在模拟器中打开了终端仿真器,然后运行它:
$ logcat -v time -b main *:V
Unable to open log device '/dev/log/main': Permission denied
$
答案 0 :(得分:4)
在寻找类似的帖子后,似乎这是重复来自:
Android unable to run logcat from application
简而言之,问题是:读取日志需要用户权限,所以我添加了:
<uses-permission android:name="android.permission.READ_LOGS" />
到清单,现在工作正常。