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 adb命令
  2. 动态修改Android参数信息的方法绕过改机检测
  3. FAQ00366]如何使Android应用程序获取系统权限
  4. Android(安卓)修改状态栏和标题栏颜色
  5. 我的Android进阶之旅------>Ubuntu下不能识别Android设备的解决
  6. android实现图片按任意路径截取
  7. android的ndk修改app_platform的方法,亲测绝对可行
  8. Android获取版本号
  9. Android(安卓)ApiDemos示例解析(15):App->Activity->SetWallpaper

随机推荐

  1. Android 获取联系人
  2. 初尝Android Jetpack 之Navigation
  3. android Activity 半透明效果
  4. Android 编译SurfaceFlinger测试程序resi
  5. android网络访问兼容
  6. Android 图文混排spannableStringBuilder
  7. Android 双击返回键退出程序
  8. android之获取信息终端
  9. android远程更新客户端
  10. android 广播传参数