网络上关于此功能的方法实现不了效果,有的利用反射,过于复杂,其实这是由于系统的一个bug引起的,所以需要在获取过程中主动添加一些信息
下面是代码:
- private Drawable loadApkFileIcon(String filepath) {
- PackageManager pm = mContext.getPackageManager();
- PackageInfo pInfo = pm.getPackageArchiveInfo(filepath, PackageManager.GET_ACTIVITIES);
- Drawable icon = null;
- if (pInfo != null) {
- ApplicationInfo aInfo = pInfo.applicationInfo;
- if (aInfo != null && MxBrowserProperties.SDK_VER >= 8) {
- aInfo.publicSourceDir = filepath;
- aInfo.sourceDir = filepath;
- icon = aInfo.loadIcon(pm);
- }
- }
- return icon;
- }