packagepc.driver.util.com.cn;importjava.io.BufferedReader;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.util.ArrayList;importjava.util.List;importjava.util.regex.Matcher;importjava.util.regex.Pattern;public classBase {//File dir 是在哪个盘执行,String command cmd的命令
public static voidrunCMD(String command,File dir){
InputStream is=null;
Process process=null;try{
process=Runtime.getRuntime().exec(command, null, dir);//执行doc命令//后面的所有操作即是读取这个命令的输出结果
is = process.getInputStream();//获取执行CMD命令后的信息
BufferedReader reader =new BufferedReader(newInputStreamReader(is));
String line=null;
StringBuffer sb=newStringBuffer();while((line = reader.readLine())!=null){
sb.append(line);
}//截取package字符串
Pattern p =Pattern.compile("package: name(.*?)versionCode");
Matcher m=p.matcher(sb);
List list=new ArrayList();while(m.find()){
list.add(m.group(1));
}for(String str : list) {
System.out.println("package"+str);
}//截取acvitity字符串,以launchable-activity: name开头, label结尾 获取中间字符串内容
Pattern p1 =Pattern.compile("launchable-activity: name(.*?) label");
Matcher m1=p1.matcher(sb);
List list1=new ArrayList();while(m1.find()){
list1.add(m1.group(1));
}for(String str1 : list1) {
System.out.println("activity"+str1);
}
}catch(IOException e) {
e.printStackTrace();
}finally{try{
process.getOutputStream().close();
is.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}public static voidmain(String[] args) {Scanner dir = new Scanner(System.in);
System.out.println("输入aapt目录:");
String aapt_dir=dir.next();
System.out.println("输入apk全路径:");
String apk_dir=dir.next();
String command=aapt_dir+" dump badging " +apk_dir;
runCMD(command);
}
}