2014-11-25 55 views
0

我正在尝试从Android设备获取电台日志。我发现这个片段可以读取电台日志。但是,该控件永远不会进入while循环。如果我们为adb logcat -d替换命令参数EXEC()Runtime.exec()不工作

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) {} 

的代码工作正常。

我觉得控制卡在line = bufferedReader.readLine()声明条件。

编辑:

基本上,我想阅读显示在屏幕上的通知。例如:我们在通话后看到的通知或发送短信显示剩余余额的通知。

通知实际上打印在Android日志中,因此我正在读取日志并从中提取消息。是否有任何其他方式来存储屏幕上显示的所有通知。

请在这方面帮助我。

回答

0

如果你在设备上运行该代码,尝试用

Process process = Runtime.getRuntime().exec("/system/bin/sh" + "-c" + "adb logcat -b radio"); 

否则更换

Process process = Runtime.getRuntime().exec("adb logcat -b radio"); 

,尝试用(在Linux上)

Process process = Runtime.getRuntime().exec("/bin/sh" + "-c" + "adb logcat -b radio"); 

或将其替换(在窗户上)

Process process = Runtime.getRuntime().exec("C:\\Windows\\System32\\cmd.exe" + "-c" + "adb logcat -b radio"); 
+0

它仍然不起作用。我正在使用测试电话连接Windows操作系统... – TryinHard 2014-11-25 08:35:53

+0

您是否尝试过使用::: Process process = Runtime.getRuntime().exe(“C:\\ Windows \\ System32 \\ cmd.exe “+”-c“+”adb logcat -b radio“); – jan 2014-11-25 09:01:29

+0

是的,我改变了,但它仍然不起作用 – TryinHard 2014-11-25 09:22:20