是否可以通过编程方式关闭移动设备。 没有使用su命令..
答案 0 :(得分:6)
可能,但您需要具有Rooted
访问权限的Superuser
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上无效,但尚未确认我自己]
答案 1 :(得分: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应用程序执行此操作。只有使用系统固件签名密钥签名的应用程序才能执行此操作
答案 2 :(得分: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命令,其中ithink也将在Android中出现..所有最好的
答案 3 :(得分:1)
我认为您的标题和正文中的代码段没有任何相似之处。该片段与KeyGuardManager相关,KeyGuardManager用于锁定和解锁键盘。
要关闭手机,您需要使用PowerManager或SU命令。 (在有根设备上。)
答案 4 :(得分:1)
输入root用户的shell命令后, svc power shutdown 在android 7.1中对我有效
答案 5 :(得分:0)
如果您的设备已植根,那么您可以尝试以下解决方案
<强>关机:强>
None
<强>重新启动:强>
相同的代码,只需使用try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
代替"reboot"
。