最近工作上遇到个需求,需要获取apk文件的包名和图标等信息,本来想着这回挺难弄得,想着得解压apk然后读取Manifest的编码后的信息。但是后来偶然看到ES文件浏览器可以显示apk的名称和图标,于是就上网搜了一下。果然,这次又犯了井底之蛙和想当然的毛病,原来这个功能PacakgeManager已经提供了。我们要做的仅仅就是调用一下API,So Easy.
不多说了上代码:
PackageManager pm = getPackageManager();
PackageInfo pi = pm.getPackageArchiveInfo("/sdcard/xxx.apk", 0);
ApplicationInfo applicationInfo = pi.applicationInfo;
applicationInfo.sourceDir = "/sdcard/xxx.apk";
applicationInfo.publicSourceDir = "/sdcard/xxx.apk";
System.out.println(applicationInfo.packageName);
注意如果你要写例子测试记得加上读SD卡的权限。
另外调用其loadIcon等方法可能会比较耗时,需要注意