2014-02-22 78 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等来读取文件的内容。

相关问题