2014-11-25 90 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