Android 判斷Root的方法

m8x2 9年前發布 | 1K 次閱讀 Java Android

方法一:(不彈框)

    private final static int kSystemRootStateUnknow = -1;
    private final static int kSystemRootStateDisable = 0;
    private final static int kSystemRootStateEnable = 1;
    private static int systemRootState = kSystemRootStateUnknow;
public static boolean isRootSystem() {
        if (systemRootState == kSystemRootStateEnable) {
            return true;
        } else if (systemRootState == kSystemRootStateDisable) {
            return false;
        }
        File f = null;
        final String kSuSearchPaths[] = { "/system/bin/", "/system/xbin/",
                "/system/sbin/", "/sbin/", "/vendor/bin/" };
        try {
            for (int i = 0; i < kSuSearchPaths.length; i++) {
                f = new File(kSuSearchPaths[i] + "su");
                if (f != null && f.exists()) {
                    systemRootState = kSystemRootStateEnable;
                    return true;
                }
            }
        } catch (Exception e) {
        }
        systemRootState = kSystemRootStateDisable;
        return false;
    }

 

方法二:(會彈框)

public synchronized boolean getRootAhth()  
{  
    Process process = null;  
    DataOutputStream os = null;  
    try  
    {  
        process = Runtime.getRuntime().exec("su");  
        os = new DataOutputStream(process.getOutputStream());  
        os.writeBytes("exit\n");  
        os.flush();  
        int exitValue = process.waitFor();  
        if (exitValue == 0)  
        {  
            return true;  
        } else  
        {  
            return false;  
        }  
    } catch (Exception e)  
    {  
        Log.d("*** DEBUG ***", "Unexpected error - Here is what I know: "  
                + e.getMessage());  
        return false;  
    } finally  
    {  
        try  
        {  
            if (os != null)  
            {  
                os.close();  
            }  
            process.destroy();  
        } catch (Exception e)  
        {  
            e.printStackTrace();  
        }  
    }  
}  


方法三:(會彈框)

//判斷機器 Android是否已經root,即是否獲取root權限   
  protected static boolean haveRoot()  
  {  
    int i = execRootCmdSilent("echo test"); //通過執行測試命令來檢測   
    if (i != -1)  return true;  
    retrun false;  
  }  

 
 本文由用戶 m8x2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!