7

是否可以以编程方式关闭移动设备。那就是不使用 su 命令..

4

6 回答 6

6

这是可能的,但您需要Rooted具有访问权限的 Android 设备Superuser。除非您的应用使用System Firmware Key. 尝试使用以下代码:

关闭:

try {
    Process proc = Runtime.getRuntime()
                    .exec(new String[]{ "su", "-c", "reboot -p" });
    proc.waitFor();
} catch (Exception ex) {
    ex.printStackTrace();
}

重启:

相同的代码,只需使用"reboot"而不是"reboot -p".

[另一方面:我在某处读到这些命令不适用于 Stock HTC ROM,但尚未确认我自己]

于 2012-09-14T19:28:30.030 回答
4

您可以使用 PowerManager 使其重新启动(这并不能保证它会重新启动 - 操作系统可能会取消它):

http://developer.android.com/reference/android/os/PowerManager.html#reboot(java.lang.String )

它需要 REBOOT 权限:

http://developer.android.com/reference/android/Manifest.permission.html#REBOOT

您是否还可以在尝试启用/禁用键盘保护时检查您的 logcat,并发布其中的内容?

您无法从普通的 SDK 应用程序中执行此操作。只有使用系统固件签名密钥签名的应用程序才能执行此操作

于 2012-05-02T10:11:53.237 回答
2

这是我用来执行任何系统命令的代码。

void shutdown_sys()
{
    Process chperm;
    try {
        chperm=Runtime.getRuntime().exec("su");
          DataOutputStream os = 
              new DataOutputStream(chperm.getOutputStream());

              os.writeBytes("shutdown\n");
              os.flush();

              chperm.waitFor();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

从您的 android 应用程序调用此函数。如果 su 在您的系统中正常运行,它将起作用。如果它不起作用,请告诉我。我没有准备好测试的 Android 基础。但同样适用于重启。所以 shutdown 也是一个 linux shell 命令,我认为它也将在 Android 中出现.. 一切顺利

于 2012-05-02T10:21:18.850 回答
2

输入 root shell 命令后,svc power shutdown在 android 7.1 中对我有用

于 2018-06-19T12:01:55.497 回答
1

我看不出与您的标题和正文中的代码段有任何相似之处。该片段与用于锁定和解锁键盘的 KeyGuardManager 相关。

为了关闭您的手机,您需要使用 PowerManager 或 SU 命令。(在有根设备上。)

于 2012-05-02T10:14:08.027 回答
1

如果您的设备已植根,那么您可以尝试以下解决方案

关闭:

try {
    Process proc = Runtime.getRuntime()
                    .exec(new String[]{ "su", "-c", "reboot -p" });
    proc.waitFor();
} catch (Exception ex) {
    ex.printStackTrace();
}

重新开始:

相同的代码,只需使用"reboot"而不是"reboot -p".

于 2016-08-28T17:48:45.743 回答