现在我正在执行类似下面的操作以root身份执行命令。但整个事情似乎有点手动,所以我用Google搜索了一下,发现roottools。这是推荐的方式还是有更好的方法?
我希望能够等待命令完成,读取输出和ret 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();
}
}
关于Chris Stratton指出的问题的更新: 我已经对我的应用程序参数进行了urlencoding,以确保没有人可以传递“something; rm -rf /”或“something&& rm -rf /”等内容并擦除设备。但经过进一步考虑,我完全放弃了消毒论证的想法。并删除了我的部分代码。为什么呢?
答案 0 :(得分:2)
原始描述:
RootTools为root用户提供了一套标准化工具集 用于开发有根的应用程序。最后,我们会 通过为开发人员提供强大,易用的功能来实现这一目标 图书馆将大大缩短开发时间 促进代码重用。该项目对任何经过验证的开发人员开放 觉得他们有所贡献。通过一起投球我们 可以简化我们自己的流程,提高我们的工作效率 应用程序,学习新技术,并为我们提供更好的体验 用户。
正如您可能理解的那样 RootTools为root用户提供了一套标准化的工具,用于开发root应用程序。如果您需要自己的非标准工具或修改RootTools的源代码。通常这个库将满足您的所有需求。我在很少的项目中使用它,并对此感到非常高兴。
祝你好运。