是否可以以编程方式关闭移动设备。那就是不使用 su 命令..
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,但尚未确认我自己]
您可以使用 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 应用程序中执行此操作。只有使用系统固件签名密钥签名的应用程序才能执行此操作
这是我用来执行任何系统命令的代码。
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 shell 命令后,svc power shutdown在 android 7.1 中对我有用
我看不出与您的标题和正文中的代码段有任何相似之处。该片段与用于锁定和解锁键盘的 KeyGuardManager 相关。
为了关闭您的手机,您需要使用 PowerManager 或 SU 命令。(在有根设备上。)
如果您的设备已植根,那么您可以尝试以下解决方案
关闭:
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
重新开始:
相同的代码,只需使用"reboot"
而不是"reboot -p"
.