测试的手机已经root,并且装有授权管理,允许应用来申请root权限。但是要怎么在程序里写代码来触发申请?我试过用:
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("su");
是会弹出一个对话框问你是否允许申请root,但只是执行这条命令有root权限而已,并不是整个程序都有root权限。
通过执行su得到的这个process是具有root权限的,你可以把你想做的事情在这个process中去做,说白了就是往这个process的输入输出流里面写点可执行的东西。
但是你得了解什么样的操作是需要root权限的,拿到root权限的仅有这样一个process,而这个process只能做一些简单的事情,复杂的事情需要自己来协调。
比如
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("su");
//这个proc就是具有root权限的,你可以通过以下这种方式执行一些root权限才能做得事。
PrintWriter pw = new PrintWriter(proc.getOutputStream());
pw.println("cd /system");
pw.flush();
pw.close();
如果需要“重定向输入输出”或者是“管道”操作都是需要自己在代码中协调的,毕竟这个process并不是解释器,而是执行器,需要解释的东西它还是不懂的。如果只是想要部分功能给用户弹个提示框什么的,在执行su这个process的时候就会弹出了,
必须说明的一点是,这种方法只认对非system用户权限的程序,如果你的程序的用户是system,是不能执行su这个操作的。
system用户的程序说明你有Android原代码,那么想得到root 权限可以用property启动service的方法。