アプリケーションでデバイス ログを読み取る機能を実装しています。
この目的のために、Reading logs programatically の助けを借りました。このコード スニペットは、デバイス ログ (実行中のすべてのプロセスのログ) を提供します。それは問題なく機能しています。
ここで、デバイス ログから アプリケーション ログをフィルター処理したいと考えています。では、どうすればプログラムでそれを行うことができますか?
アプリケーションでデバイス ログを読み取る機能を実装しています。
この目的のために、Reading logs programatically の助けを借りました。このコード スニペットは、デバイス ログ (実行中のすべてのプロセスのログ) を提供します。それは問題なく機能しています。
ここで、デバイス ログから アプリケーション ログをフィルター処理したいと考えています。では、どうすればプログラムでそれを行うことができますか?
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 をご覧ください。
1) プログラムによるログの読み取りは、Ice Cream Sandwich から機能しません。
2) を使用しPackageManager
てパッケージ マネージャーを取得し、インストールされているアプリケーションのパッケージ名を取得します。
3) あなたを使用ActivityManager
して、実行中のプロセスのリストを取得します。
アプリケーションのパッケージ名と実行中のプロセスを照合し、プロセス ID を見つけます。また、ターゲット アプリに属するログをパッケージ名またはプロセス ID でフィルター処理します。
これはあくまでも全体像です。