请问:如何在代码中重启手机?

jlense 2009-11-16 08:10:59
如题

我在SDK文档里也没找着相关应用的介绍,不知道有没有朋友做过这方面的,了解的帮个忙啊。
...全文
1988 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
13号大王 2012-02-15
  • 打赏
  • 举报
回复
you may refer to this link:
http://stackoverflow.com/questions/3456467/why-does-my-app-throw-an-android-permission-reboot-securityexception
aidecanlan88 2011-11-05
  • 打赏
  • 举报
回复
我的报错了,为什么加进哪个权限虚拟机运行不起来,而且没有Intent.ACTION_REQUEST_SHUTDOWN这个,
伊茨米可 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 jlense 的回复:]

已解决:

Intent i = new Intent(Intent.ACTION_REBOOT);
i.setAction(Intent.ACTION_REBOOT);
i.putExtra("nowait", 1);
i.putExtra("interval", 1);
i.putExtra("window", 0);
sendBroadcast(i); ……
[/Quote]
请问你在Manifest中加入权限了吗?
比如:android:sharedUserId="android.uid.system"


没有报类似于INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的错误吗?
伊茨米可 2011-10-08
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 xuyfly 的回复:]

引用 14 楼 xsnowhutao 的回复:

String cmd = "su -c reboot";//让手机从启
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
new AlertDialog.Builder(this).se……
[/Quote]
请问你这个是怎么用的, 为什么我添加完毕后没有任何反映。。。
蓄丰 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 xsnowhutao 的回复:]

String cmd = "su -c reboot";//让手机从启
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
new AlertDialog.Builder(this).setTitle("Error").setMessage……
[/Quote]

这个管用,谢谢!
xsnowhutao 2011-05-09
  • 打赏
  • 举报
回复
String cmd = "su -c reboot";//让手机从启
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
new AlertDialog.Builder(this).setTitle("Error").setMessage(
e.getMessage()).setPositiveButton("OK", null).show();
}
echo007 2009-12-31
  • 打赏
  • 举报
回复
看问题要看本质,任何系统级应用都会到linux的系统调用中去, 对于reboot来讲,会调用到int reboot (int mode) 或者直接用 __reboot来做, 所以你只要change mode的值就ok, mode 里有
#define RB_AUTOBOOT LINUX_REBOOT_CMD_RESTART
#define RB_HALT_SYSTEM LINUX_REBOOT_CMD_HALT
#define RB_ENABLE_CAD LINUX_REBOOT_CMD_CAD_ON
#define RB_DISABLE_CAD LINUX_REBOOT_CMD_CAD_OFF
#define RB_POWER_OFF LINUX_REBOOT_CMD_POWER_OFF

这些可以选择,power off , autoboot 对应的就是开关机了。 当然您需要root或者system的权限,或者SHELL好像也没问题。
jlense 2009-11-21
  • 打赏
  • 举报
回复
重启是实现了,现在不知道怎么关机了。
yili_xie 2009-11-21
  • 打赏
  • 举报
回复
Android source本身就有关机的代码,你找出来就能用了~~
jlense 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kinghua_q 的回复:]
要不你自己做了个JNI接口试试,在C语言里面直接system("reboot");

如果权限不出问题的话,应该是可以的
[/Quote]

试了这种方法,应该是权限不够,其他命令都可以,如system("mkdir /sdcard/test")没问题,reboot不行,su后reboot也不行,也不知道怎么获取权限。
jlense 2009-11-20
  • 打赏
  • 举报
回复
已解决:

Intent i = new Intent(Intent.ACTION_REBOOT);
i.setAction(Intent.ACTION_REBOOT);
i.putExtra("nowait", 1);
i.putExtra("interval", 1);
i.putExtra("window", 0);
sendBroadcast(i);

需在Android.mk中添加:

LOCAL_CERTIFICATE := platform


包含Android.mk的工程须在Linux下编译才有效。
jinlking 2009-11-18
  • 打赏
  • 举报
回复
Context.sendOrderedBroadcast(new Intent(Intent.ACTION_SHUTDOWN), null,
br, mHandler, 0, null, null);
试一下
jlense 2009-11-18
  • 打赏
  • 举报
回复
能直接通过Java执行Linux命令不?
jlense 2009-11-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yili_xie 的回复:]
搜了下好像没有这些API,但是ANDROID source里面有关机的feature,我觉得你跟一下它的代码应该知道怎么重启,不过说穿了重启就是往linux发一个reboot命令,你可以从这两方面下手~~
[/Quote]

嗯,我也想过通过执行命令来重启,但现在也不知道如何在代码中执行Linux命令啊
kinghua_q 2009-11-17
  • 打赏
  • 举报
回复
要不你自己做了个JNI接口试试,在C语言里面直接system("reboot");

如果权限不出问题的话,应该是可以的
zhouyongyang 2009-11-16
  • 打赏
  • 举报
回复
学习
yili_xie 2009-11-16
  • 打赏
  • 举报
回复
搜了下好像没有这些API,但是ANDROID source里面有关机的feature,我觉得你跟一下它的代码应该知道怎么重启,不过说穿了重启就是往linux发一个reboot命令,你可以从这两方面下手~~
xuzysun 2009-11-16
  • 打赏
  • 举报
回复
没听说过。
woshigexiaonvren 2009-11-16
  • 打赏
  • 举报
回复
这个没用过

80,362

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧