gpt4 book ai didi

android - 无法使用 runtime.exec 重启设备

转载 作者:搜寻专家 更新时间:2023-11-01 09:14:39 25 4
gpt4 key购买 nike

出于某种原因,我无法使用 Runtime.getRuntime().exec("/system/bin/reboot"); 重启 Android 设备。我现在已经在 3 台设备上尝试了以下代码,但没有成功。一个是从 rowboat-android 源构建的。另外两个是 Motorola Droid Pro(Rooted,库存)和 HTC Ledgent(Rooted,Cygen Mod)。所有设备都运行 Android 2.2 Froyo。

有人知道为什么吗? su 与 super 用户应用程序一样有效。我应该注意到其他各种 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;
}

最佳答案

根据您在设备上获得 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"});

在您的应用程序中测试所有三种情况可能更好。

关于android - 无法使用 runtime.exec 重启设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com