Android

[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();
    }
}

 
 

-Android
-