Android AsyncTask 进程(logcat)不输出消息(在模拟器上)
Posted
技术标签:
【中文标题】Android AsyncTask 进程(logcat)不输出消息(在模拟器上)【英文标题】:Android AsyncTask process (logcat) does not output messages (on emulator) 【发布时间】:2012-05-18 07:38:53 【问题描述】: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 消息。
我用ls
替换了logcat
,然后bufferedReader 填充了line
。
bufferedReader
的检查显示成员 in
(InputStreamReader) 本身有一个成员 endOfInput
,它在 readLine() 之前为 false 并变为 true紧随其后。
最新消息: 我在模拟器本身中打开了终端模拟器,然后运行它:
$ logcat -v time -b main *:V
Unable to open log device '/dev/log/main': Permission denied
$
【问题讨论】:
【参考方案1】:在寻找类似的帖子后,这似乎是一个重复来自:
android unable to run logcat from application
简而言之,问题是:读取日志需要用户权限,所以我补充说:
<uses-permission android:name="android.permission.READ_LOGS" />
到清单,现在可以正常工作了。
【讨论】:
以上是关于Android AsyncTask 进程(logcat)不输出消息(在模拟器上)的主要内容,如果未能解决你的问题,请参考以下文章