Android 判斷Root的方法
方法一:(不彈框)
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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!