以编程方式重新启动设备在adb执行时不起作用

时间:2015-02-20 10:17:11

标签: android root

在我的应用程序中,有一个重启功能,可以正常使用任何有根设备......直到现在。

我最新的测试设备(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"

1 个答案:

答案 0 :(得分:1)

如果您的设备未植根,则无法以编程方式重启设备!这是一个安全问题。您可能没有超级用户权限