1

アプリケーションでデバイス ログを読み取る機能を実装しています。

この目的のために、Reading logs programatically の助けを借りました。このコード スニペットは、デバイス ログ (実行中のすべてのプロセスのログ) を提供します。それは問題なく機能しています。

ここで、デバイス ログから アプリケーション ログをフィルター処理したいと考えています。では、どうすればプログラムでそれを行うことができますか?

4

2 に答える 2

1

logcat リファレンスを確認しましたか? http://developer.android.com/tools/debugging/debugging-log.html#alternativeBuffers およびhttp://developer.android.com/tools/help/logcat.html

あなたが試すことができます

public class LogTest extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    try {
      Process process = Runtime.getRuntime().exec("logcat -b main -d");
      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.textView1);
      tv.setText(log.toString());
    } catch (IOException e) {
    }
  }
}

コマンドを指定するだけです。コマンドをadbで実行してテストできます。さらにフィルタリングするには、http://developer.android.com/tools/debugging/debugging-log.html#filteringOutput をご覧ください。

于 2013-03-28T07:18:16.510 に答える
0

1) プログラムによるログの読み取りは、Ice Cream Sandwich から機能しません。

2) を使用しPackageManagerてパッケージ マネージャーを取得し、インストールされているアプリケーションのパッケージ名を取得します。

3) あなたを使用ActivityManagerして、実行中のプロセスのリストを取得します。

アプリケーションのパッケージ名と実行中のプロセスを照合し、プロセス ID を見つけます。また、ターゲット アプリに属する​​ログをパッケージ名またはプロセス ID でフィルター処理します。

これはあくまでも全体像です。

于 2013-03-28T07:18:49.023 に答える