使用广播实现的Android关机及重启

步骤一:编写Java代码
java部分代码:


                                                case R.id.broadcast_reboot:     //重启

                                                                Log.v("Reboot", "Reboot-->broadcast_reboot");

                                                                Intent i = new Intent(Intent.ACTION_REBOOT);

                                                                i.putExtra("nowait", 1);

                                                                i.putExtra("interval", 1);

                                                                i.putExtra("window", 0);

                                                                sendBroadcast(i);               


                                                                break;

                                                               

                                                case R.id.broadcast_shutdown:     //关机

                                                                Log.v("Reboot", "Reboot-->broadcast_shutdown");

                                                                Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);

                                                                  intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);

                                                                  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                                                                  startActivity(intent);


                                                                break;



注:关机可以设置时间设置【定时关机】功能,关机中的Intent.ACTION_REQUEST_SHUTDOWN 及 Intent.EXTRA_KEY_CONFIRM 在IDE中报错,但可以忽略,因为这两个属性不对上层开放,APP在源码中编译就可以直接使用。


步骤二:修改Manifest.xml中属性


< manifest xmlns:android = "http://schemas.android.com/apk/res/android"
  ……
   
android:sharedUserId = "android.uid.system"
……
>
   
< uses-permission android:name = "android.permission.SHUTDOWN" />
……
</ manifest >


注:

android:sharedUserId="android.uid.system" 将app提升到系统权限,需要到源码中编译,还有关机权限: android.permission.SHUTDOWN


步骤三:编译APK

将项目拷贝到Android源码中进行编译,我拷贝到【gingerbread/development/apps/】下,并将项目的bin文件夹给删除,同时最重要的一步在项目下编写mk文件,山寨其它项目的mk文件写如下,不要漏掉LOCAL_CERTIFICATE := platform

Android.mk:


LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)


LOCAL_MODULE_TAGS := optional


LOCAL_SRC_FILES := $(call all-java-files-under, src)


LOCAL_PACKAGE_NAME := 你的项目名

LOCAL_CERTIFICATE := platform


include $(BUILD_PACKAGE)



步骤四:

通过mm编译生成的apk安装到机器中,就可以操作重启及关机


注:使用相同的方法可以修改系统时间,重点是将应用提升到拥有系统权限,但进过此操作并未获得root权限。

补充:后来使用init.rc启动系统服务的方法也是可行的,之前是因为编写关机 和 重启的sh文件使用了中文符号,使得sh命令有问题

方法二可以参考:http://my.unix-center.net/~Simon_fu/?p=951

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值