Process p = Runtime.getRuntime().exec("su");
dos = new DataOutputStream(p.getOutputStream());
dis = new DataInputStream(p.getInputStream());
br = new BufferedReader(new InputStreamReader(dis));
dos.writeBytes(cmd + "\n");
dos.flush();
dos.writeBytes("exit\n");
dos.flush();
String line = null;
while((line = br.readLine()) != null) {
result += line;
}
p.waitFor();
在执行代码 dos.flush()时,提示streamed is closed
这是root权限导致的,Android 8.1在获取root权限时直接使用exec("su")是无效的,需要按以下方式获取:
Process process = Runtime.getRuntime().exec("/system/bin/su");
模拟器还有解决的可能,
真机现在除了刷机,无法root的。