在Android应用程序中使用颜色显示来自logcat的行

时间:2014-02-20 10:22:15

标签: android bufferedreader logcat

我遇到了一个奇怪的问题,试图在我的Android应用程序中用颜色显示我的logcat数据。

我在应用程序中显示的数据是:

private class LoadLogCatData extends AsyncTask<Void, String, Void> {

@Override
protected Void doInBackground(Void... params) {

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

          log = new StringBuilder();
          String line = ""; 
          int count = 0;

          while ((line = bufferedReader.readLine()) != null) {
            String lineType = line.substring(0, 1);
            String insertLine = "";

            if (lineType.equals("E")) {
                insertLine = "<font color=#ff0000>" + line + "</font>";
            } else if (lineType.equals("W")) {
                insertLine = "<font color=#ffa500>" + line + "</font>";
            } else if (lineType.equals("D")) {
                insertLine = "<font color=#000080>" + line + "</font>"; 
            } else if (lineType.equals("I")) {
                insertLine = "<font color=#006400>" + line + "</font>";    
            } else {
                insertLine = "<font color=#000000>" + line + "</font>";             
            }

            if (count == 0) {
                log.append("<b>" + insertLine + "</b><br>");        
            } else {
                log.append(count + ": " + insertLine + "<br>");
            }

            count++;
          }   
        } catch (IOException e) {
            e.printStackTrace();
        }

    return null;
}

protected void onPostExecute(Void v) {
    logArea.setText(Html.fromHtml(log.toString()));
    progressRing.setVisibility(View.INVISIBLE);
    }
} 

出于某种原因,数据以正确的颜色显示,直到line logcat 738。之后,一切都呈深蓝色。

我首先想到的是,它可能将其余数据读作单个字符串,因此无法识别它是什么类型的行。 但事实并非如此,因为“count”(行号)仍然正确打印出来,这意味着每一行都被处理掉了,但由于某种原因,它被赋予了蓝色。

我试图“syso”出每行,这给了我所有正确的颜色..打印出这样的东西:

D: BLUE
D: BLUE
W: ORANGE
I: GREEN
... And so on

我希望有人能看出问题所在。 提前谢谢。

0 个答案:

没有答案