我正在尝试创建一个供个人使用的应用程序,可以重新启动或关闭我的Android设备,无论哪种方法都有效,但此代码不起作用:
Runtime.getRuntime().exec("su -c reboot");
我已经在android清单中添加了REBOOT权限
但是如果我在ADB shell中执行此代码,我的设备会重新启动。
这是我的代码:
public void reboot() {
Process rebootProcess = null;
try
{
rebootProcess = Runtime.getRuntime().exec("su -c reboot");
}
catch (IOException e)
{
e.printStackTrace();
return;
}
// We waitFor only if we've got the process.
if (rebootProcess != null)
{
try
{
int result = rebootProcess.waitFor();
Log.i("result", "" + result);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
更新
在ADB shell下执行命令仅在输入su时有效,按Enter键然后键入reboot。它不能在单行上运行。
答案 0 :(得分:0)
查看我的git repo,获取rebootLib文件,就像你需要的那样,如果遇到任何问题,请查看示例。
重新启动权限只能由系统应用程序使用(使用系统密钥签名),它还需要android:sharedUserId =" android.uid.system"在你的清单中运作。您的应用永远不会调用该权限,因为您使用root权限时不需要该权限。