我试图从Android设备获取无线电日志。我发现这个片段可以读取无线电日志。但是,控件永远不会进入while
循环。
try {
String line = "";
Process process = Runtime.getRuntime().exec("adb logcat -b radio");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
Log.i("entered loop", log.toString());
log.append(line + "\n");
}
Log.i("app", log.toString());
} catch (IOException e) {}
如果我们将命令adb logcat -d
替换为 exec()的参数,则代码可以正常工作。
我认为控件在条件中停留在 line = bufferedReader.readLine()语句中。
编辑:
基本上,我想阅读屏幕上显示的通知。例如:我们在通话后发送的通知或发送显示剩余余额的短信。
通知实际上是在Android日志中打印的,因此我正在阅读日志并从中提取消息。是否有其他方法可以存储屏幕上显示的所有通知。
请帮助我。
答案 0 :(得分:0)
如果您在设备上运行此代码,请尝试替换
Process process = Runtime.getRuntime().exec("adb logcat -b radio");
与
Process process = Runtime.getRuntime().exec("/system/bin/sh" + "-c" + "adb logcat -b radio");
否则,尝试用(在Linux上)替换它
Process process = Runtime.getRuntime().exec("/bin/sh" + "-c" + "adb logcat -b radio");
或(在Windows上)
Process process = Runtime.getRuntime().exec("C:\\Windows\\System32\\cmd.exe" + "-c" + "adb logcat -b radio");