在root用户的Android应用程序上,我使用
执行关机su reboot -p
它运作正常,但我注意到手机几乎立即停机(与显示关机动画相反,可能正在做其他事情)。
这是以编程方式关闭Android手机的正确方法吗?是否有一些关键代码需要在关机前执行?
答案 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会做很多事情。
因此,您可以看到执行su reboot -p
是错误的。
答案 3 :(得分:0)
您的应用不需要作为系统应用安装,但必须具有root权限。您只需以root用户身份运行此命令即可关闭设备:
svc power shutdown
我感谢Firelord的回答elsewhere,这让我发现了这个shell命令的存在。
我认为这会有一个优雅的关闭,但我不确定。也许它会突然关机。请测试,然后edit this answer澄清。
此外,上述shell命令在Android 4.2.2或更早版本中不起作用。 help text没有提到它。 svc
拒绝该命令为无效,并显示一些帮助文本以便尝试提供帮助。