【发布时间】:2012-05-02 10:09:19
【问题描述】:
是否可以通过编程方式关闭移动设备。 那就是不使用 su 命令..
【问题讨论】:
-
可能重复。你在这里有答案stackoverflow.com/questions/3745523/…
-
@MayuMayooresan 他们不为我工作
标签: android
是否可以通过编程方式关闭移动设备。 那就是不使用 su 命令..
【问题讨论】:
标签: android
可以,但您需要具有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,但我自己还没有确认]
【讨论】:
su 命令对其进行了测试?
您可以使用 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 中适用于我
【讨论】:
我看不出与您的标题和正文中的代码 sn-p 有任何相似之处。 sn-p与KeyGuardManager相关,用于锁定和解锁键盘。
要关闭手机,您需要使用 PowerManager 或 SU 命令。 (在根设备上。)
【讨论】:
如果您的设备已root,那么您可以尝试以下解决方案
关机:
try {
Process proc = Runtime.getRuntime()
.exec(new String[]{ "su", "-c", "reboot -p" });
proc.waitFor();
} catch (Exception ex) {
ex.printStackTrace();
}
重启:
相同的代码,只需使用"reboot" 而不是"reboot -p"。
【讨论】: