出于某种原因,我无法使用Runtime.getRuntime()。exec(“/ system / bin / reboot”);重启Android设备。我现在在3台设备上尝试了以下代码而没有运气。一个是从rowboat-android源构建的。另外两个是摩托罗拉Droid Pro(Rooted,stock)和HTC Ledgent(Rooted,Cynogen Mod)。所有设备都运行Android 2.2 Froyo。
有谁知道为什么? su工作以及超级用户应用程序是可见的。我应该注意其他各种shell命令都可以工作,比如netcfg(chmod'到777)和ls。
public static boolean executeCommand(SHELL_CMD iShellCmd){
String cmd = null;
String line = null;
String fullResponse = null;
Process lPs = null;
Log.d(Global.TAG,"--> !!!!! Running shell command");
if (iShellCmd == SHELL_CMD.restart_device){
cmd = "reboot";
}
Log.d(Global.TAG,"--> About to exec: " + cmd);
try {
lPs = Runtime.getRuntime().exec("su");
lPs = Runtime.getRuntime().exec("/system/bin/reboot");
} catch (Exception e) {
e.printStackTrace();
}
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(lPs.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(lPs.getInputStream()));
try {
while ((line = in.readLine()) != null) {
Log.d(Global.TAG,"--> Command result line: " + line);
if (fullResponse == null){
fullResponse = line;
}else{
fullResponse = fullResponse + "\n" + line;
}
}
} catch (Exception e) {
e.printStackTrace();
}
Log.d(Global.TAG,"--> Full response was: " + fullResponse);
return true;
}
答案 0 :(得分:2)
根据您在设备上获得root权限的方式,您可以执行以下任何操作:
Runtime.getRuntime().exec(new String[]{"/system/xbin/su","-c","reboot"});
或
Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot"});
或
Runtime.getRuntime().exec(new String[]{"su","-c","reboot"});
可能更好地测试应用程序中的所有三种方案。
答案 1 :(得分:1)
最后经过数周的搜索:
Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"});
答案 2 :(得分:0)
尝试在不同的行上运行“su / system / bin / reboot”而不是su和命令。这可能会有所帮助:)。
答案 3 :(得分:0)
如果您想要按下按钮,请尝试:
final Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
try {
Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot"});
} catch (IOException e) {
}
}
});
顺便说一下,这个代码必须被称为button1。
答案 4 :(得分:0)
而不是{"/system/bin/su","-c","reboot"}
我将"/system/bin/su"
部分更改为"su"
,然后它对我有效。
喜欢这个Runtime.getRuntime().exec(new String[]{"su","-c","reboot"});