在开发过程当中会有需要root权限,之前一直感觉很深奥。直到有一天。。。
首先考虑了一种最直接的方法,通过命令行来获取root权限。我们可以通过adb shell来获取su权限,作为应用同样应该也可以通过命令行来获取。
附上代码:
public boolean getRootPermission(String pkgCodePath) {
Process process = null;
DataOutputStream os = null;
try {
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
String chmod = "chmod 777 " + pkgCodePath;
os.writeBytes(chmod + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e) {
return false;
} finally {
try {
if (os != null) {
os.close();
}
process.destroy();
} catch (Exception e) {
}
}
return true;
}
下面实验一下是否真的获取到了目录的root权限:
我们来查看一下/proc文件夹里的内容
private void listData() {
try {
Process p = Runtime.getRuntime().exec("ls /proc");
Readline readline = new Readline();
tv_result.setText(readline.readline(p));
} catch (IOException e) {
e.printStackTrace();
}
}
可以获取到。
更多root相关实践仍在研究中。