使用 Android returns 上的标记执行 logcat empy

Execute logcat with tag on Android returns empy

我有一个 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[=26= 得到了空响应] (如果我 运行 同时从 adb "logcat -s AndroidRuntime" 我得到很多行...)

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

谢谢!

来自 Android Jelly Bean,应用程序无法从其他应用程序读取日志条目,除非您的设备已获得 root 权限并且您以超级用户身份读取日志。

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