Android AsyncTask进程(logcat)不输出消息(在模拟器上)

时间:2012-05-18 07:38:54

标签: android android-emulator logcat

启动了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
$

1 个答案:

答案 0 :(得分:4)

在寻找类似的帖子后,似乎这是重复来自:

Android unable to run logcat from application

简而言之,问题是:读取日志需要用户权限,所以我添加了:

<uses-permission android:name="android.permission.READ_LOGS" />

到清单,现在工作正常。