2014-02-22 79 views
3

我需要以編程方式讀取apk文件(包括AndroidManifest.xml)的內容。我知道有一些工具,如apktool,dex2jar,aapt來提取apk內容,但是,我需要通過Android應用執行相同的。順便說一句我的起點是一個有效的apk文件路徑如何以編程方式讀取apk文件的內容?

+0

是不是想列出.apk或所有類文件的信息?講清楚。 –

+0

@NayanRath我需要閱讀'AndroidManifest.xml'和'源文件'。 – talha06

+0

病毒掃描是否需要此操作。請問因爲我也是這麼做的,並且有一些問題。 –

回答

0

首先得到其路徑apk文件這段代碼

final PackageManager pm = getPackageManager(); 
       PackageInfo packageInfo = null; 
       try { 
        packageInfo = pm.getPackageInfo("PACKAGE NAME HERE", PackageManager.GET_META_DATA); 
       } catch (NameNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       File file = new File(packageInfo.applicationInfo.sourceDir); 
       Uri uri = Uri.fromFile(file); 
+0

當我從文件中獲得uri後,如何讀取apk內容(即清單文件等)? – talha06

+0

你可以閱讀這個線程http://stackoverflow.com/questions/2097813/how-to-parse-the-androidmanifest-xml-file-inside-an-apk-package/4761689#4761689這也是http:// stackoverflow.com/questions/13469147/get-android-apk-file-versionname-or-versioncode-without-installing-apk –

+0

謝謝,我已經閱讀了他們兩個.. @NitinMisra – talha06

0

查看另一個問題這樣的回答: https://stackoverflow.com/a/34850406/55940

基本上你可以使用這個:

PackageInfo packageInfo = context.getPackageManager().getPackageArchiveInfo(file.getAbsolutePath(), 0); 

這隻會得到元數據,儘管...你將不得不使用ZipInputStream等來讀取文件的內容。

相關問題