获取第三方应用的清单文件

时间:2014-08-24 16:39:18

标签: android android-manifest

application允许您浏览应用程序的清单文件。它是如何做到的?我在OS的API中找不到任何用于获取其他应用程序清单文件的内容。

2 个答案:

答案 0 :(得分:4)

首先,你可以得到一个像这样的应用程序列表:

PackageManager pm = getActivity().getPackageManager();
List<ApplicationInfo> apps = pm.getInstalledApplications(
        PackageManager.GET_META_DATA | PackageManager.GET_SHARED_LIBRARY_FILES
    );

然后可以从以下位置获取APK的位置:

apps.get(x).publicSourceDir

以上将具有如下值:

/data/app/com.example.someonesapp.apk

从那里可以从.apk访问清单文件,如下所示:

try {
    ZipFile apk = new ZipFile("/data/app/com.example.someonesapp.apk");
    ZipEntry manifest = apk.getEntry("AndroidManifest.xml");
    if (manifest != null){
        Log.d("ManifestGetter", "Manifest size = " + manifest.getSize());
        InputStream stream = apk.getInputStream(manifest);
        // do stuff with the file here e.g. get contents
        stream.close();
    }
    apk.close();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} 

最重要的是,不需要root

答案 1 :(得分:0)

构建应用时,不会隐藏Manifest文件。它按原样发送到您的.apk文件中。您可以使用7zip之类的归档器进行检查。所以只需用7zip打开你的apk文件(它会识别它),你就会看到你的AndroidManifest.xml文件。

我认为该应用只是在应用程序文件夹中查找该文件。