该程序实现一下功能,
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) {
}
}
}
}
}
分享到:
相关推荐
如何修改Android模拟器的IMSI,简单方法。
Android 模拟器永久root工具------包含 (android for img.rar、Android SU文件更新包.zip、RootExplorer.apkSuperuser.apk) 1、用android for img.rar里的android for img.exe打开 E:\SDK\platforms\android-8\...
Android 模拟器中AVD路径的修改(WIN7)
android模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Androidandroid模拟器java Android...
Android模拟器入门Android模拟器入门Android模拟器入门Android模拟器入门Android模拟器入门Android模拟器入门Android模拟器入门
做Android开发,模拟器是必备品,而Android模拟器的IP和电脑总不是一个网段的,想要进行测试非常麻烦,甚至很多时候模拟器没有办法连接互联网,本文详细的描述了Android模拟器IP设置的完整步骤。
人生重开模拟器微信小程序源码,无需服务器、域名等工具,编辑好上传代码即可使用 人生重开模拟器微信小程序源码,无需服务器、域名等工具,编辑好上传代码即可使用 人生重开模拟器微信小程序源码,无需服务器、...
将程序放到emulator.exe目录,启动命令行 参数为15位 IMEI号。 生成emulator_N.exe
压缩文件包含:Android模拟器快捷键大全.pdf、 Android模拟器也玩ping.pdf、 gsm call命令向Android模拟器打电话.pdf、 sms send命令向Android模拟器发短信.pdf、 让你的Android模拟器支持Cupcake屏幕键盘.pdf
Android模拟器躲避的检测与应对,介绍模拟器检测的主要方法
猫狗叫声模拟器微信小程序前端源码无后台,这是一款纯前端无后台的猫狗叫声模拟器小程序,是可以模拟猫咪、狗狗叫声与猫狗进行交流的一款小工具。
关于android模拟器启动时遇到的问题进行解决~
android模拟器修改host.docx
Android 模拟器建立端口映射讲解 redir Android 模拟器建立端口映射
在android模拟器中安装APK文件说明 。
用VNC远程控制android模拟器用VNC远程控制android模拟器
制作可独立分发的Android模拟器
来电模拟器微信小程序源码 可自定义来电名称归属地铃声等带流量主 模拟一个来电电话,可以正常接通,挂断等 让你假装有事,迅速离场,避免尴尬等等! 比如使用场景: 相亲的时候遇到奇葩,想找接口离开. 场价party想...
Android模拟器介绍,介绍了Android模拟器的原理,使用方法等。用openoffice打开
是一个word文档,里面有图。介绍了如何在android模拟器上安装和卸载应用程序。