码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA获取apk包的package和launchable-activity名称(一)

时间:2016-09-18 20:50:48      阅读:489      评论:0      收藏:0      [点我收藏+]

标签:

背景:

每次要获取apk包的package和launchable-activity名称都需要运行doc命令,感觉好浪费感情,因为经常记不住常常的路径,但又不想把aapt设置为环境变量

我这个工具分几步的:

1、JAVA代码输出package和launchable-activity名称名称

2、把此JAVA封装成EXE,虽然我技能太浅,但我还是想尝试一下

3、这个EXE能够上人自己上传apk包,然后点击输出package和aunchable-activity按扭,就能出现相应的值

目前是第1步,也完善了几个自己以前没用过的API:

package pc.driver.util.com.cn;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Base {
    //File dir 是在哪个盘执行,String command cmd的命令
    public static void runCMD(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(new InputStreamReader(is));
            String line =null;
            StringBuffer sb =new StringBuffer();
            while((line = reader.readLine())!=null){
                sb.append(line);
            }
            //截取package字符串
            Pattern p =Pattern.compile("package: name(.*?)versionCode");
            Matcher m =p.matcher(sb);
            List<String> list=new ArrayList<String>();
            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 =p.matcher(sb);
            List<String> list1=new ArrayList<String>();
            while(m1.find()){
                list1.add(m1.group(1));
            }
            for (String str1 : list) {
                System.out.println("activity"+str1);
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        } finally{
            try {
                process.getOutputStream().close();
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    }
    public static void main(String[] args) {
        File dir=new File("F:/");
        String command="F:/adt-bundle-windows-x86_64-20140702/sdk/build-tools/android-4.4W/aapt dump badging  E:/apk/Pcdriver-1.9.9.9.apk";
        runCMD(command, dir);
         
    }
}

 

JAVA获取apk包的package和launchable-activity名称(一)

标签:

原文地址:http://www.cnblogs.com/sincoolvip/p/5882817.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!