1

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メッセージが出力されます。

に置き換えlogcatlsから、bufferedReaderがいっぱいになりlineます。

の検査は、readLine()の前にfalseであり、その直後にtruebufferedReaderになるメンバーを持つメンバーin(InputStreamReader)を示しています。endOfInput


最後のニュース: エミュレータ自体の中でターミナルエミュレータを開いて実行しました:

$ logcat -v time -b main *:V
Unable to open log device '/dev/log/main': Permission denied
$
4

1 に答える 1

4

同様の投稿を探した後、これは次のサイトとかなり重複しているようです。

Androidがアプリケーションからlogcatを実行できません

要するに、問題は次のとおりでした。ログを読み取るにはユーザー権限が必要なので、次のように追加しました。

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

マニフェストに追加すると、正常に動作します。

于 2012-05-18T18:23:52.783 に答える