2013-07-17 84 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)。