2012-11-19 41 views
5

Làm thế nào tôi có thể kiểm tra xem thiết bị Android có được root hay không? Tôi đang sử dụng mã sau:Làm thế nào để kiểm tra thiết bị Android là thiết bị có nguồn gốc?

Process proc = Runtime.getRuntime().exec ("su"); 

và khi tôi chạy nó trên thiết bị tôi đã theo ngoại lệ.

Causes by:Permission denied 

Nhưng chạy trên trình giả lập không đưa ra bất kỳ ngoại lệ nào.

Tôi đang sử dụng một cách khác để kiểm tra. Vào adb shell trong dòng khen cho emulator trả về #, nhưng đối với thiết bị văn adb shell cung cấp cho các lỗi sau:

[email protected]:/ $ su 
su 
/system/bin/sh: su: not found 
127|[email protected]:/ $ 

Vậy làm thế nào tôi có thể kiểm tra xem thiết bị được bắt rễ hay không.

Cảm ơn trước.

Trả lời

4

tôi sử dụng lớp này:

private void CheckRoot() 
    {      
     Process p; 

     try { 
       // Preform su to get root privledges 
       p = Runtime.getRuntime().exec("su"); 

       // Attempt to write a file to a root-only 
       DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
       os.writeBytes("echo \"Do I have root?\" >/data/LandeRootCheck.txt\n"); 

       // Close the terminal 
       os.writeBytes("exit\n"); 
       os.flush(); 
       try { 
        p.waitFor(); 
         if (p.exitValue() == 0) { 
          // TODO Code to run on success       
         this.IsRoot=true; 
         } 
         else { 
          // TODO Code to run on unsuccessful 
          this.IsRoot=false; 
         } 
       } catch (InterruptedException e) { 
        // TODO Code to run in interrupted exception 
        toastMessage("not root"); 
       } 
      } catch (IOException e) { 
       // TODO Code to run in input/output exception 
       toastMessage("not root"); 
      } 
    } 
Các vấn đề liên quan