Android系统关机或重启的几种实现方式 .

一. 内存溢出方式实现重启(4.0之后不可用)

在安卓4.0之前,系统有个bug,通过疯狂的向系统添加吐司是可以实现死机并且重启的。具体实现代码如下

<strong>	
    	for (int i = 0; i < Integer.MAX_VALUE; i++) {
			Toast.makeText(getApplicationContext(), "", 1).show();
		}</strong>

这种方法最简单,但是却不实用,而且在4.0之后谷歌修补了这个漏洞。这里仅作为一种参考

 

二. 发送系统广播方式

关机或重启的广播:Intent.ACTION_REQUEST_SHUTDOWN和Intent.ACTION_REBOOT

我们只需要向系统发送这两个广播就行。但是,两个广播只能由系统应用才能使用,也就是pid是system的应用才能发送的广播。

这里,我们需要在manifast.xml这里面进行一些修改

android:sharedUserId="android.uid.system" 


然后增加权限

<uses-permission android:name="android.permission.SHUTDOWN" /> 

 

把项目放在源码中进行编译,增加mk文件

01.LOCAL_PATH:= $(call my-dir)  
02.include $(CLEAR_VARS)  
03.  
04.LOCAL_MODULE_TAGS := optional  
05.  
06.LOCAL_SRC_FILES := $(call all-java-files-under, src)  
07.  
08.LOCAL_PACKAGE_NAME := PowerActionDemo  
09.LOCAL_CERTIFICATE := platform  
10.  
11.include $(BUILD_PACKAGE) 



 

三. 调用Linux-shell(最常用,也是最实用,需要root)

Runtime可以用来调用并执行shell命令的,而Android支持shell语言的,基于这一点,可以利用Runtime来执行 关机或重启的shell命令

try{  
    Process proc =Runtime.getRuntime().exec(new String[]{"su","-c","reboot -p"});  //关机  
     proc.waitFor();  
}catch(Exception e){  
    e.printStackTrace();  
}  


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值