使用 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");
我有一个 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");