2013-07-17 138 views
2

我正在創建一個應用程序,但現在及時檢查根目錄是否每次凍結時都會按「檢查根目錄」按鈕。有任何想法嗎?檢查根目錄是否凍結

這裏是「檢查根」代碼:「導致調用線程等待與此對象完成執行有關本機進程」

Process p; 
     try { 
      // Perform SU to get root privileges 
      p = Runtime.getRuntime().exec("su"); 
      DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
      os.writeBytes("remount rw"); 
      os.writeBytes("echo Root Test > /system/rootcheck.txt"); 
      os.writeBytes("exit\n"); 
      os.flush(); 

      try { 
       p.waitFor(); 
        if (p.exitValue() != 255){ 
         //Phone is rooted 
         Toast.makeText(getApplicationContext(), "Your device is rooted\r\n\r\n(Long Press to know how to get root acess)", 0).show(); 
         break; 
        } 
        else { 
         //Phone is not rooted 
         Toast.makeText(getApplicationContext(), "Your device is not rooted\r\n\r\n(Long Press to know how to get root acess)", 0).show(); 
         break; 
        } 
      } catch (InterruptedException e) { 

      } 
     } catch (IOException e) { 

     } 
+0

'whoami'將返回用戶名,您不必重新掛載並寫入文件系統(與僅運行單個命令相比,兩個潛在的代價高昂的操作)來檢查您是否獲得root用戶,只是比較它的輸出「根」。 – Machinarius

回答

1

使用waitFor()根據SDK的規格。它看起來像su命令從來沒有完成,由於缺乏根訪問。

也許您可能只想在合理的時間段內使用wait(long ms)(記錄here),並測試以確定您的進程是否已成功完成(有root)或超時(沒有root)。