在Android上执行带有标记的logcat返回empy

时间:2016-01-31 10:12:06

标签: android logcat android-logcat

我有一个Activity,它每秒都会写一个logcat的计数器:

Runnable rLog = new Runnable() {

    @Override
    public void run() {
        i++;
        Log.d("bbb", "i= " + i);
        handler.postDelayed(this, 1000);                
    }
}; 

另外 - 我有一个服务,从" logcat -s bbb"并记录下来:

Runnable rGetLog = new Runnable() {

    @Override
    public void run() {
        Runtime rt = Runtime.getRuntime();
        Process process = null;
        try {
            process = rt.exec("logcat -s bbb");
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        BufferedReader bufferedReader = 
                new BufferedReader(new InputStreamReader(process.getInputStream()));

        try {
            while ((line = bufferedReader.readLine()) != null)
            {
                Log.d("aaa", "get line = " + line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }               
    }
};  

此代码效果很好。当我更改标签" bbb"一个真正的标签,如" AndroidRuntime"或者另一个标签...... 我从logcat获得了空响应 (如果我同时运行" logcat -s AndroidRuntime"来自adb我有很多行......)

谁知道问题是什么?有什么不同?

谢谢!

1 个答案:

答案 0 :(得分:1)

从Android Jelly Bean,应用程序无法读取其他应用程序的日志条目,除非您的设备已植根并且您以超级用户身份阅读日志。

尝试使用sudo获取权限: process = rt.exec(" su&& logcat -s YOUR_TAG");