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;    
  }

猜你喜欢

转载自iaiai.iteye.com/blog/2168810