android APK实现系统重启

 今天工厂那边突然要个需求,做个压力测试。要求手机不断重启。这有需求就去做。那如何做呢?如果让手机重启呢?

呵呵,其实很简单 PowerMananger啊?看看里面是否有相应的方法实现。唉。不的了。有。

public void reboot(String reason)就这个东西。那好了,解决了。同时要求不断重启。那简单,直接在开机完成后捕捉完成事件,然后臧春杰reboot命令。

注意加上权限

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

 

嗯,代码写好了。一运行。我的妈,不得了。一直在重启。硬是没机会停下了。哈哈。后悔啊。得有个检测机制啊。

 

那就开机完成后,读SD卡里的一个文件,相当于密码,如果匹配,就不重启了。这样工厂就有机会停止程序了。

这基本就是文件的I/O操作。大家应该都清楚的不的了。

public class StartUpReceiver extends BroadcastReceiver {
    private static final String TAG = "StartUpReceiver";
  public static final String REBOOT_ACTION = "com.qisda.factest.action.reboot";
    private static final int PASSWD = 11;
   
    private static final String PSW_FILE_NAME = "/psw.txt";
    private static final String LOG_FILE_NAME = "/rebootlog.txt";
    private static final String internal_sdcard = Environment.getExternalStorageDirectory().getPath();
    private static final String external_sdcard = internal_sdcard+ "/sdcard2";
   
    private static final String PSW_FILE = external_sdcard + PSW_FILE_NAME;
    private static final String LOG_FILE = internal_sdcard + LOG_FILE_NAME;
  
    @Override
    public void onReceive(Context arg0, Intent arg1) {
        // TODO Auto-generated method stub
            boolean bVerified = verifyPasswd(PSW_FILE);
            if(bVerified){
                debug("password is right!!!");
                return;
            }
            String time = getSystemTime();
            outputLog("now begin to shutdown system :    " + time + "\n");  
   String action = arg1.getAction();
   if(action.equals(Intent.ACTION_BOOT_COMPLETED) || action.equals(REBOOT_ACTION)){
    PowerManager powerManager= (PowerManager)arg0.getSystemService(Context.POWER_SERVICE);
    powerManager.reboot(null);
        }
    }
    private boolean verifyPasswd(String filepath){
        File file = new File(filepath);
        byte[] psword = new byte[1];
        if(! file.exists()){
            return false;
        }
        try {
            FileInputStream inputStream = new FileInputStream(file);
            inputStream.read(psword);
            inputStream.close();
            if(psword[0] == (byte)PASSWD){
                return true;
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }
    private void outputLog(String time){
        File file = new File(LOG_FILE);
        if(! file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        try {
            FileOutputStream outputStream = new FileOutputStream(file,true);
            byte[] log = time.getBytes();
            outputStream.write(log);
            outputStream.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

注意读写SD卡加权限

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

网上有人说无法写SD卡。我这边是2.3的,测试是没问题的。可能1.5不行吧。不知道。

 

一直不明白为什么system用户没有权限写SD卡呢?诡异啊。

比较简单。自己做个纪录。 臧春杰

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值