Runtime.exec() : 在 Android 中重新启动?

2022-09-02 23:06:58

我正在寻找一种可用于重新启动root设备的解决方案。我知道重新启动设备对用户来说是非常糟糕的设计,如这里所述,它并不是真的适用于应用程序。主要目的是在测试期间重新启动手机(我在视频聊天应用程序上工作,有时当一切向南时,我需要重新启动)

我观察到,在终端(或ConnectBot)中使用重新启动手机要比使用ACTION_REBOOT重新启动要快得多,无论如何我都无法使用。adb shell

目前,我能够获得超级用户权限,使用

Process root = Runtime.getRuntime().exec("su");

但我无法进行实际的重启。我在G1(HTC)和Galaxy S(三星)上尝试,但没有成功。我在/system/bin/reboot

以下是我的一些尝试:

Process reboot = Runtime.getRuntime().exec("/system/bin/reboot");
Process reboot = Runtime.getRuntime().exec("reboot");
Process reboot = Runtime.getRuntime().exec("su reboot"); 

我读了这篇关于 Runtime.exec() 陷阱的文章,但我认为我不是在这种情况下。

由于使用ConnectBot使我能够执行这样的操作,我非常确定这是可能的。请不要告诉我去看看ConnectBot代码,这是一个庞大而复杂的项目:)

你能帮我解决这个问题吗?

谢谢。


答案 1

经过数周的搜索,终于:

Runtime.getRuntime().exec(new String[]{"/system/bin/su","-c","reboot now"});

答案 2

重新启动在Android中工作正常。你可能没有正确地执行 runtime.exec()。您需要处理

    public static void rebootSU() {
    Runtime runtime = Runtime.getRuntime();
    Process proc = null;
    OutputStreamWriter osw = null;
    StringBuilder sbstdOut = new StringBuilder();
    StringBuilder sbstdErr = new StringBuilder();

    String command="/system/bin/reboot";

    try { // Run Script

        proc = runtime.exec("su");
        osw = new OutputStreamWriter(proc.getOutputStream());
                            osw.write(command);
                osw.flush();
        osw.close();

    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (osw != null) {
            try {
                osw.close();
            } catch (IOException e) {
                e.printStackTrace();                    
            }
        }
    }
    try {
        if (proc != null)
            proc.waitFor();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    sbstdOut.append(ReadBufferedReader(new InputStreamReader(proc
            .getInputStream())));
    sbstdErr.append(ReadBufferedReader(new InputStreamReader(proc
            .getErrorStream())));
    if (proc.exitValue() != 0) {
                }
        }

推荐