JAVA獲取apk包的package和launchable-activity名稱(一)

背景:java

每次要獲取apk包的package和launchable-activity名稱都須要運行doc命令,感受好浪費感情,由於常常記不住經常的路徑,但又不想把aapt設置爲環境變量app

我這個工具分幾步的:工具

一、JAVA代碼輸出package和launchable-activity名稱名稱優化

二、把此JAVA封裝成EXE,雖然我技能太淺,但我仍是想嘗試一下spa

三、這個EXE可以上人本身上傳apk包,而後點擊輸出package和aunchable-activity按扭,就能出現相應的值code

目前是第1步,也完善了幾個本身之前沒用過的API:blog

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 =p1.matcher(sb);
            List<String> list1=new ArrayList<String>();
            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 void main(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); } }

 

後來再看,爲了使用方便,優化了一下字符串

連接:https://pan.baidu.com/s/18PPJIVLZYT-XjQm-TfETlQ
提取碼:s8eh
get

相關文章
相關標籤/搜索