2

我正在创建一个应用程序,但现在及时检查根,每次我按下“检查根”按钮时它都会冻结。有任何想法吗?

这是“检查根”代码:

Process p;
        try {
            // Perform SU to get root privileges
            p = Runtime.getRuntime().exec("su");
            DataOutputStream os = new DataOutputStream(p.getOutputStream());
            os.writeBytes("remount rw");
            os.writeBytes("echo Root Test > /system/rootcheck.txt");
            os.writeBytes("exit\n");
            os.flush();

            try {
                p.waitFor();
                    if (p.exitValue() != 255){
                        //Phone is rooted
                        Toast.makeText(getApplicationContext(), "Your device is rooted\r\n\r\n(Long Press to know how to get root acess)", 0).show();
                        break;
                    }
                    else {
                        //Phone is not rooted
                        Toast.makeText(getApplicationContext(), "Your device is not rooted\r\n\r\n(Long Press to know how to get root acess)", 0).show();
                        break;
                    }
            } catch (InterruptedException e) {

            }
        } catch (IOException e) {

        }
4

1 回答 1

1

使用waitFor() “导致调用线程等待与此对象关联的本机进程完成执行。” 根据SDK规范。su由于缺乏 root 访问权限,该命令看起来永远不会完成。

也许您可能只是想在一段合理的时间内使用wait(long ms)在此处记录),并测试您的过程是成功完成(有 root)还是超时(没有 root)。

于 2013-07-17T13:53:55.700 回答