Runtime.exec()不起作用

时间:2014-11-25 07:22:55

标签: android android-logcat

我试图从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日志中打印的,因此我正在阅读日志并从中提取消息。是否有其他方法可以存储屏幕上显示的所有通知。

请帮助我。

1 个答案:

答案 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");