2012-11-19 9 views
5

Wie kann ich überprüfen, ob Android-Gerät verwurzelt ist oder nicht? Ich verwende den folgenden Code ein:Wie kann überprüfen, Android-Gerät Root-Gerät?

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

und wenn ich es auf einem Gerät laufen Ich habe folgende Ausnahme.

Causes by:Permission denied 

Aber das Ausführen auf einem Emulator gibt keine Ausnahme.

Ich verwende einen anderen Weg zu überprüfen. Die Eingabe adb shell in der commend Linie für Emulator gibt #, aber für die Geräte Schreiben adb shell gibt die folgenden Fehler:

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

Wie kann ich überprüfen, ob das Gerät verwurzelt ist oder nicht.

Vielen Dank im Voraus.

Antwort

4

Ich benutze diese Klasse:

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"); 
      } 
    } 
Verwandte Themen