0

我正在开发一个应用程序并使用以下代码在文本视图中显示该应用程序,但它显示的唯一命令是logcat -d.

我希望它过滤带有标签的东西dalvikvm。我试过logcat -s dalvikvm了,但我的应用程序没有在设备上显示任何日志信息。

这是我的代码。

    try {
        Process process = Runtime.getRuntime().exec("logcat -s dalvikvm");
        BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(process.getInputStream()));

        StringBuilder log=new StringBuilder();
        String line;
        while ((line = bufferedReader.readLine()) != null) {
          log.append(line);
        }
        TextView tv = (TextView)findViewById(R.id.textlog);
        tv.setText(log.toString());
      } catch (IOException e) {
      }
    }
  }
4

1 回答 1

0

对 logcat.cpp 的检查证实了我的怀疑,即来自程序本身的任何错误消息都将写入 stderr——只有实际的日志消息会写入 stdout。

因此,如果您的尝试有任何问题,您将什么也看不到。很可能出错的事情是在您的应用清单中没有读取日志权限;没有这个,由您的应用程序运行的 logcat,因此在您的应用程序的用户 ID 下,将无法访问日志缓冲区。它的抱怨将是标准错误而不是标准输出。

两个建议:

  • 尝试打开 process.getErrorStream() ,看看是否收到错误消息。

  • 确保您具有读取日志清单权限

于 2012-06-29T03:34:11.763 回答