该程序实现一下功能,

  1,修改android模拟器的imei,

  2,自动启动android模拟器

  3,运行开机启动程序,ps:这个开机启动程序apk就没放出来了。

  4,停止android模拟器;

  重复1,2,3过程

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
     while(true){//

         eidtEmulator();//修改imei


         Runtime rt = Runtime.getRuntime();  
         String command = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator -avd AVD-10";   
         rt.exec(command);  // 运行android模拟器
         System.out.println("success run");

         Thread.sleep(2*60*1000);//  等待2分钟后,停止android模拟器
         if(findRunningWindowsProcess("emulator-arm.exe")){
               killRunningWindowsProcess("emulator-arm.exe");
        }
   }
  } catch (IOException e) {
   e.printStackTrace();
  } catch (Exception e) {
   e.printStackTrace();
  } 
 }
 
 public static void eidtEmulator() throws Exception{
     String oldFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm.exe ";
     String newFilePath = "C:\\Program Files\\Android\\android-sdk\\tools\\emulator-arm1.exe";
     FileInputStream in = new FileInputStream(oldFilePath);
     FileOutputStream out = new FileOutputStream(newFilePath);
     byte bytes[] = new byte[1];
     byte gsnbytes[] = new byte[3];
     byte imeiBytes[] = new byte[15];
     int count;
     while ((count = in.read(bytes)) != -1) {
           out.write(bytes);
           if (bytes[0] == 0x43) {// if is char 'C'
                    count = in.read(gsnbytes);
                    if (count == -1) {
                         break;
                    }
                    out.write(gsnbytes);
                    if (gsnbytes[0] == 0x47 && gsnbytes[1] == 0x53 && gsnbytes[2] == 0x4E) {//if is char 'GSN'
                         count = in.read(bytes);//read char '.'
                         if (count == -1) {
                                break;
                          }
                          out.write(bytes);
                          count = in.read(imeiBytes);//read old imei
                         if (count == -1) {
                                 break;
                          }
                          byte[] imeis = getIMEIBytes();
                          out.write(imeis);//write new imei;
                     }
               }

        }
  in.close();
  out.close();
  File oldFile = new File(oldFilePath);
  oldFile.delete();
  File newFile = new File(newFilePath);
  newFile.renameTo(oldFile);
  

 }

 

 

 public static byte[] getIMEIBytes() {//随即生成15位imei号
       StringBuffer bff = new StringBuffer();
       byte imeiBytes[] = new byte[15];
       for(int i=0;i                 int num = (int) Math.round(Math.random()*8);
                bff.append(num);
                imeiBytes[i] = Byte.parseByte("3"+num, 16);
         }
      //  printArray(imeiBytes);
       System.err.println("start imei: "+bff.toString());
       return imeiBytes;
 }

 

 public static void printArray(byte bytes[]) {
  StringBuffer buff = new StringBuffer();
  for (byte b : bytes) {
   buff.append(String.format("%02X", b) + " ");
  }
   System.out.println(buff.toString());
 }
 
 public static boolean killRunningWindowsProcess(String processName){  
        try {  
            Runtime.getRuntime().exec("taskkill /IM " + processName);  
            System.out.println("kill process successful");  
//            System.out.println("Process " + processName + " was killed. Mission completed.");  
            return true;  
        } catch (Exception ex) {  
            ex.printStackTrace();  
            System.out.println("kill process fail");  
            System.out.println("Misson failed.");  
            return false;  
        }  
    }  
 public static boolean findRunningWindowsProcess(String processName) {  
        BufferedReader bufferedReader = null;  
        Process proc = null;  
        try {  
            proc = Runtime.getRuntime().exec("tasklist /FI \"IMAGENAME eq " + processName + "\"");  
            bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));  
            String line;  
            while ((line = bufferedReader.readLine()) != null) {  
                if (line.contains(processName)) {  
                    return true;  
                }  
            }  
            return false;  
        } catch (Exception ex) {  
            ex.printStackTrace();  
            return false;  
        } finally {  
            if (bufferedReader != null) {  
                try {  
                    bufferedReader.close();  
                } catch (Exception ex) {  
                }  
            }  
            if (proc != null) {  
                try {  
                    proc.destroy();  
                } catch (Exception ex) {  
                }  
            }  
        }  
    }  

}

更多相关文章

  1. Android(安卓)intent category大全
  2. Android(Java):minSdkVersion、targetSdkVersion、targetApiLeve
  3. 2010.10.15 Google Android(安卓)Workshop Note
  4. Android获取系统拍照程序发出的广播
  5. Eclipse运行工程报AVD没有找到错误解决过程
  6. Android(安卓)程序退出的办法
  7. Android(安卓)OTA升级过程
  8. Android调用系统内部的下载程序下载文件(二)
  9. 安卓入门准备第一步

随机推荐

  1. Ubuntu中手动安装配置JDK, Android(安卓)
  2. 如何让 android 完全退出
  3. Android数据库开源框架GreenDao分析
  4. Android(安卓)默认AP名字,以及AP名字存储
  5. android 监听手机电量变化
  6. android 3D-纹理------球的纹理
  7. 解决Android(安卓)sdk manager无法访问go
  8. spring mvc + mybatis 构建 cms 内容发布
  9. Android为ListView的Item设置不同的布局
  10. Android快速开发工具:AndroidAnnotations: