在我的应用程序中,有一个重启功能,可以正常使用任何有根设备......直到现在。
我最新的测试设备(Android 4.2)没有任何反应。但是使用带有相同命令的adb提示符可以解决问题。
首先,我确定设备是否为root,返回true:
String[] places = {"/sbin/", "/system/bin/", "/system/xbin/", "/data/local/xbin/", "/data/local/bin/", "/system/sd/xbin/", "/system/bin/failsafe/", "/data/local/"};
for (String where : places) {
if (new File(where + "su").exists()) {
isDeviceRootedResult = true;
break;
}
}
之后我尝试执行如下命令:
Process rebootProcess = null;
rebootProcess = Runtime.getRuntime().exec("su -c reboot now");
if (rebootProcess != null) rebootProcess.waitFor();
我在LogCat中看不到任何输出,没有异常,没有抛出,没有......
虽然“相同”的adb命令可以正常工作:
adb.exe shell "su -c reboot now"
答案 0 :(得分:1)
如果您的设备未植根,则无法以编程方式重启设备!这是一个安全问题。您可能没有超级用户权限