Я считаю, что вам просто нужно окружить их блоком try / catch , это правило Java, попробуйте этот код:
public void RunAsRoot(String[] cmds) {
Process p = null;
try {
p = Runtime.getRuntime().exec("su");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : cmds) {
try {
os.writeBytes(tmpCmd+"\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
os.writeBytes("exit\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
os.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Во-вторых, вручную выполните su, затем идентификатор команды, чтобы увидеть, может ли он стать пользователем root, на всякий случай.