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

更多相关文章

  1. android实现图片按任意路径截取
  2. android开发资源网站,下载各版本SDK源码、Android Studio、NDK等
  3. Android版本号以及对应的API Level和版本代号
  4. Android各个版本命名(从1.5到6.0)
  5. android自动检测版本更新
  6. Android各个版本对应的源代码
  7. android获取版本号

随机推荐

  1. Android中的onTouch()事件如何区分单击事件
  2. 判断scrollview中某子控件是否可见
  3. android studio gradle依赖库使用国内资
  4. Android集成React Native实现多Tab页
  5. Android标题头滑动渐变,Titlebar滑动渐变,
  6. ANDROID 8.1 多个apk同时录音
  7. Android解析自定义xml文件(方案一)
  8. failed to set system property
  9. Android 如何获取RadioGroup选中RadioBut
  10. Android: JNI WARNING: illegal start by