djwdj 发表于 2017-12-16 20:11

android 执行 shell 组件源码 多命令共用进程版v1.0

本帖最后由 djwdj 于 2017-12-17 12:29 编辑

      java.lang.Process su;
      public String cmd(String cmd)
      {
                String s=;
                try
                {
                        if(su==null)
                        {
                              su=Runtime.getRuntime().exec("su");
                        }
                        OutputStream o=su.getOutputStream();
                        o.write((cmd+"\n").getBytes());
                        o.flush();
                        InputStreamReader i=new InputStreamReader(su.getInputStream());
                        char[] c=new char;
                        int l=i.read(c);
                        s=new String(c,0,l-1);
                }
                catch (IOException e)
                {}
                return s;
      }

djwdj 发表于 2017-12-16 22:24

本帖最后由 djwdj 于 2017-12-16 22:34 编辑

该版本不用缓冲区
优点:只用一个进程,执行速度快。
缺点:只有4k输出,不适用文件交互。

文件交互可以用有缓冲区的:https://www.52pojie.cn/thread-676102-1-1.html
优点:可读文件
缺点:一个命令一个进程

萧菜鸟 发表于 2017-12-16 20:34

java代码看懂了,不知道什么用

aa38123 发表于 2017-12-16 20:51

没看出你的“持续”体现在哪,还有su传参进来却没有用到,而且你这样只能得到成功的结果,错误结果要调用p.getErrorStream()得到
页: [1]
查看完整版本: android 执行 shell 组件源码 多命令共用进程版v1.0