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 に送られます。

そのため、試みに問題がある場合は、何も表示されません。間違っている可能性が非常に高いのは、アプリ マニフェストにログの読み取りアクセス許可がないことです。これがないと、アプリによって実行され、アプリのユーザー ID の下で logcat がログ バッファーにアクセスできなくなります。そして、それはstdoutではなくstderrに対する苦情です。

2 つの推奨事項:

  • 代わりに process.getErrorStream() を開いて、エラー メッセージが表示されるかどうかを確認してください。

  • ログのマニフェストの読み取り権限があることを確認してください

于 2012-06-29T03:34:11.763 に答える