现在,我正在执行以下操作,以root身份执行命令。但是整个过程似乎有点手动,所以我用Google搜索了一下并找到了roottools。是推荐的方式还是有更好的选择?

我希望能够等待命令完成,读取输出并重新设置val。

    public static void deleteSystemApp(Context context, String app)
    {
            final String MOUNT_RW = "mount -o remount,rw -t rfs /dev/stl5 /system; \n";
            final String MOUNT_RO = "mount -o remount,ro -t rfs /dev/stl5 /system; \n";
            final String RM_APP = "rm -rf " + app + "; \n";
            Process process;
            try
            {
                    process = Runtime.getRuntime().exec("su");
                    DataOutputStream os = new DataOutputStream(process.getOutputStream());
                    os.writeBytes(MOUNT_RW);
                    Toast.makeText(context, RM_APP, Toast.LENGTH_SHORT).show();
                    //os.writeBytes(RM_APP);
                    os.writeBytes(MOUNT_RO);
            }
            catch(IOException e)
            {
                    e.printStackTrace();
            }
    }


关于克里斯·斯特拉顿指出的问题的最新消息:
我已经对我的应用程序参数进行了urlencoding,以确保没有人可以传递“诸如rm -rf /”或“ && rm -rf /”之类的东西并擦除设备。但是经过进一步的考虑,我完全放弃了清理论点的想法。并删除了我的部分代码。为什么?


为什么有人要对自己的设备执行此操作?
如果其他人能够传递恶意参数,则该设备已经受到威胁。

最佳答案

原始说明:


  RootTools为扎根开发人员提供了一套标准化的工具,用于
  用于生根应用程序的开发。最后,我们将
  通过为开发人员提供强大,易于使用的功能来实现这一目标
  库将大大缩短开发时间并
  促进代码重用。该项目对任何经过验证的开发人员开放
  觉得他们有贡献。通过共同参与,我们
  可以简化我们自己的流程,提高我们的效率
  应用,学习新技术并为我们提供更好的体验
  用户。


您可能了解到,RootTools为有根的开发人员提供了一套标准化的工具,用于在有根应用程序的开发中使用。如果您需要自己的非标准工具,或者修改RootTools的源代码。通常,此库将满足您的所有需求。我在几个项目中使用了它,对此感到非常高兴。

祝好运。

10-08 00:31