android 执行shell命令,流提示已关闭

Process p = Runtime.getRuntime().exec("su");

dos = new DataOutputStream(p.getOutputStream());
dis = new DataInputStream(p.getInputStream());
br = new BufferedReader(new InputStreamReader(dis));

        dos.writeBytes(cmd + "\n");
        dos.flush();
        dos.writeBytes("exit\n");
        dos.flush();
        String line = null;
        while((line = br.readLine()) != null) {
            result += line;
        }
        p.waitFor();

在执行代码 dos.flush()时,提示streamed is closed

这是root权限导致的,Android 8.1在获取root权限时直接使用exec("su")是无效的,需要按以下方式获取:

Process process = Runtime.getRuntime().exec("/system/bin/su");

img


这样修改还是不行,报同样的错误

模拟器还有解决的可能,
真机现在除了刷机,无法root的。