大家好,我最近写了一些代码,在我的应用程序中由后台服务启动的后台线程中连续读取LogCat输出。我认为我的代码中没有错误但它不起作用。
在我的帖子中,我有:
@Override
public void run() {
Process process = null;
String cmd = "logcat -v time | grep 'AudioFocus requestAudioFocus()'";
try {
process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
os.writeBytes("logcat -c" + "\n");
os.writeBytes(cmd + "\n");
os.flush();
} catch(Exception e) {
}
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
try {
while ( (line = reader.readLine()) != null ) {
Log.e(StaticVal.TAG, line);
// code for write line to my own log file
}
} catch(Exception e) {
}
}
我还添加了显示权限:
<uses-permission android:name="android.permission.READ_LOGS" />
但是,当我使用PC插入设备并使用Android Studio进行测试时,Log.e(StaticVal.TAG, line);
没有打印出结果,也没有写入我自己的日志文件。
感谢任何帮助!
(通过adb终端直接在我的设备上运行logcat -v time | grep 'AudioFocus requestAudioFocus()'
按预期获得结果)