Android root poweroff

时间:2012-03-07 09:10:24

标签: android root shutdown

在root用户的Android应用程序上,我使用

执行关机
su reboot -p

它运作正常,但我注意到手机几乎立即停机(与显示关机动画相反,可能正在做其他事情)。

这是以编程方式关闭Android手机的正确方法吗?是否有一些关键代码需要在关机前执行?

4 个答案:

答案 0 :(得分:1)

如果您的应用已植根,请以root身份运行以下命令:

am start -a android.intent.action.ACTION_REQUEST_SHUTDOWN

答案 1 :(得分:0)

见这里: http://developer.android.com/reference/android/os/PowerManager.html

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
pm.reboot("Because I want you to reboot!")

这应该可行。

答案 2 :(得分:0)

在Android源代码中,您可以找到以下内容:

/**
 * Low-level function turn the device off immediately, without trying
 * to be clean.  Most people should use
 * {@link android.internal.app.ShutdownThread} for a clean shutdown.
 *
 * @deprecated
 * @hide
 */
@Deprecated
public static native void shutdown();

我认为这个原生功能对应于您的su reboot -p。此外,您可以从引用的代码注释中看到您应该使用ShutdownThread来执行干净关闭。

在ShutdownThread中,Android会做很多事情。

  • 它关闭了ActivityManager。我认为关闭ActivityManager意味着所有活动都将通过必要的生命周期,因此将存储活动状态。但我不确定。我没有检查。
  • 然后,Android关闭了蜂窝无线电接口。
  • 之后,它会关闭蓝牙。
  • 最后,它尝试关闭MountService。

因此,您可以看到执行su reboot -p是错误的。

答案 3 :(得分:0)

在Android 4.3或更高版本中,可能有更好的方法可以关闭设备。

您的应用不需要作为系统应用安装,但必须具有root权限。您只需以root用户身份运行此命令即可关闭设备:

svc power shutdown

我感谢Firelord的回答elsewhere,这让我发现了这个shell命令的存在。

我认为这会有一个优雅的关闭,但我不确定。也许它会突然关机。请测试,然后edit this answer澄清。

此外,上述shell命令在Android 4.2.2或更早版本中不起作用。 help text没有提到它。 svc拒绝该命令为无效,并显示一些帮助文本以便尝试提供帮助。