zoukankan      html  css  js  c++  java
  • 自动批改android模拟器的imei的小程序 和 下载各个版本SDK Tools及ADT

     

    ADT 22.6.0版本的下载路径是:http://dl.google.com/android/ADT-22.6.0.zip

    ADT22.6.1版本的下载路径是:http://dl.google.com/android/ADT-22.6.1.zip

    SDK Tools r22.6版本的下载路径是:http://dl.google.com/android/android-sdk_r22.6-windows.zip

    SDK Tools r22.6.1版本的下载路径是:http://dl.google.com/android/android-sdk_r22.6.1-windows.zip

      
     
    自动修改android模拟器的imei的小程序

      该程序实现一下功能,

      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<imeiBytes.length;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) {  
            }  
          }  
        }  
      } 

      }

    andriod sdk 安卓模拟器修改imei码,位置信息

    http://tieba.baidu.com/p/2343515177

  • 相关阅读:
    struts2类型转换2
    list集合排序3
    list集合排序2
    list集合排序
    JSON
    Java获取文件Content-Type(Mime-Type)
    struts2文件下载
    获取文件大小
    struts2国际化
    人人都是产品经理
  • 原文地址:https://www.cnblogs.com/firecode/p/4120514.html
Copyright © 2011-2022 走看看