判断手机是否有root权限

/**
     * 判断当前手机是否有ROOT权限
     * @return
     */
    public boolean isRoot(){
        boolean bool = false;

        try{
            if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())){
                bool = false;
            } else {
                bool = true;
            }
            Log.d(TAG, "bool = " + bool);
        } catch (Exception e) {

        } 
        return bool;
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ProcessBuilder没有root权限,但是可以使用ProcessBuilder来启动一个具有root权限的进程。在Linux系统中,可以使用sudo命令来获取root权限,ProcessBuilder可以通过以下方式使用sudo命令来启动一个具有root权限的进程: ```java ProcessBuilder builder = new ProcessBuilder("sudo", "command"); ``` 这将使用sudo命令来运行指定的命令,并以root权限运行该命令。需要注意的是,运行sudo命令需要用户具有sudo权限,否则会提示需要输入密码或者无法获取root权限。 ### 回答2: 要判断ProcessBuilder是否具有root权限,可以通过以下步骤进行判断: 1. 首先,需要创建一个ProcessBuilder对象。这个对象用于启动一个新的进程。 2. 调用ProcessBuilder对象的command方法,并传入一个命令作为参数。例如,可以使用"whoami"命令,该命令用于获取当前用户的用户名。 3. 调用ProcessBuilder对象的start方法,启动一个新的进程,并获取该进程的输出流。 4. 使用Java的IO流读取该进程的输出流,并获取输出结果。 5. 如果输出结果是"root",则表示ProcessBuilder具有root权限;否则,表示ProcessBuilder没有root权限。 以下是一个示例代码: ``` import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class RootChecker { public static void main(String[] args) { boolean hasRootPermission = checkRootPermission(); System.out.println("ProcessBuilder has root permission: " + hasRootPermission); } public static boolean checkRootPermission() { ProcessBuilder processBuilder = new ProcessBuilder(); processBuilder.command("whoami"); try { Process process = processBuilder.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String output = reader.readLine(); if (output.equals("root")) { return true; } } catch (IOException e) { e.printStackTrace(); } return false; } } ``` 上述代码会执行"whoami"命令,并获取该命令的输出结果。如果输出结果是"root",则返回true,表示ProcessBuilder具有root权限;否则,返回false,表示ProcessBuilder没有root权限。 ### 回答3: 要判断ProcessBuilder是否具有root权限,可以采取以下方法: 1. 使用ProcessBuilder创建一个进程并执行一个需要root权限的命令,例如尝试执行一个需要root权限的系统命令如"sudo"。如果进程能够成功执行,说明ProcessBuilder具有root权限。可以通过捕获进程输出并检查其返回值来判断执行结果。 2. 使用ProcessBuilder的environment()方法获取当前进程的环境变量,并检查是否包含具有root权限的环境变量。通常,当进程以root权限运行时,其环境变量会包含一些特定的标记,比如"USER=root"或"SUDO_USER=root"。可以通过遍历进程的环境变量,查找是否有这样的标记来判断ProcessBuilder是否具有root权限。 3. 使用ProcessBuilder的command()方法获取要执行的命令,然后检查该命令是否需要root权限。可以通过判断命令的开头是否为"sudo"或"su"来确定是否需要root权限。如果需要root权限,可以认为ProcessBuilder具有root权限。 需要注意的是,这些方法只是对ProcessBuilder是否具有root权限的一种推测。要真正确定ProcessBuilder是否具有root权限,可能需要更加深入的系统调用和权限检查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值