我有一个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我有很多行......)
谁知道问题是什么?有什么不同?
谢谢!
答案 0 :(得分:1)
从Android Jelly Bean,应用程序无法读取其他应用程序的日志条目,除非您的设备已植根并且您以超级用户身份阅读日志。
尝试使用sudo获取权限: process = rt.exec(" su&& logcat -s YOUR_TAG");