[Android] アプリ・サービス内でのlogcat読取
2017/11/23
アプリやサービス内でlogcatを読み取ることが出来ます。
今回はAndroid4.1以降でのlogcat出力について。
※Android4.1以降では、自アプリのlogcatしか覗けなくなっています。
パーミッションは不要。
Thread logcatThread = null; @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); if (logcatThread == null) { logcatThread = new Thread(new Runnable() { @Override public void run() { String line; Process process; BufferedReader reader = null; try { process = Runtime.getRuntime().exec(new String[] { "logcat", "-v", "time", "*:V" }); reader = new BufferedReader(new InputStreamReader(process.getInputStream()), 1024); while (true) { //==== ログ読み込み ====// line = reader.readLine(); if ((line == null) || (line.length() == 0)) { //-==- データ無し -==-// try { Thread.sleep(100); } catch (InterruptedException e) { } continue; } line += "\r\n"; // 読み取ったログに対して任意の処理を行う。 } } catch (IOException e) { } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { } } } logcatThread = null; } }); logcatThread.start(); } }