【问题标题】:How to shutdown an Android mobile programmatically?如何以编程方式关闭 Android 手机?
【发布时间】:2012-05-02 10:09:19
【问题描述】:

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

【问题讨论】:

标签: android


【解决方案1】:

可以,但您需要具有Superuser 访问权限的Rooted Android 设备。除非您的应用使用System Firmware Key 签名,否则您无法在没有 Root 的情况下执行此操作。尝试使用以下代码:

关机:

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,但我自己还没有确认]

【讨论】:

  • 我尝试了这个关机代码,但它重启了电话而不是关机
  • 你确定你使用了“rebo​​ot -p”而不仅仅是“rebo​​ot”。另外请告诉我们您的设备、android 版本和 rom。
  • @Sheharyar 是否可以通过编程方式禁用关机/静音?当设备被锁定或解锁时??
  • @rup35h 我不这么认为。
  • 您的设备是否已正确植根并使用其他su 命令对其进行了测试?
【解决方案2】:

您可以使用 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 应用程序执行此操作。只有使用系统固件签名密钥签名的应用程序才能执行此操作

【讨论】:

  • 我不需要重启我只想关机
  • @Krishnakant Dalal 是否可以通过编程方式禁用关机/静音?当设备被锁定或解锁时??
【解决方案3】:

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

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 中出现。祝你好运

【讨论】:

  • 好的。重启和关机,这些命令是系统命令。要调整这些命令,您需要是电话的 root 用户。默认情况下,您没有根权限。您需要破解您的手机并将其植根。只需在 youtube 或 google 中输入如何根植您的特定 android 模型。您一定会了解更多。 Rooting 基本上改变了操作系统的优势,您可以在其中从用户模式更改为 root 模式,反之亦然..
  • 你需要root你的手机。只需谷歌搜索如何做到这一点。您有 xroot 和其他一些可用于 root 设备的工具。只是谷歌如何root你的手机......这应该是你的第一步
  • 我的要求是,当我点击应用程序中的按钮时,手机会自动关机。但如果我想执行 su cmds,我会手动更改手机设置.. 所以我离开它......
  • 你能给我一个更好的解决方案吗?
  • 点击即可调用上述函数。但如前所述,它是一个优先命令,只能在应用程序的 su 之后执行
【解决方案4】:

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

【讨论】:

    【解决方案5】:

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

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

    【讨论】:

    • 是的.. 但是考虑到手机已经root了。
    【解决方案6】:

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

    关机:

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

    重启:

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

    【讨论】:

    • 使用 lineageos 16 在基于 magisk 的 motorola x4 上像魅力一样工作。
    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    相关资源
    最近更新 更多