首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

取得apk应用的图标

2012-07-22 
获得apk应用的图标public Drawable getAPKDrawable(String filePath) {Drawable dr nullif (filePath !

获得apk应用的图标

public Drawable getAPKDrawable(String filePath) {Drawable dr = null;if (filePath != null) {String PATH_PackageParser = "android.content.pm.PackageParser";String PATH_AssetManager = "android.content.res.AssetManager";try {Class pkgParserCls = Class.forName(PATH_PackageParser);Class[] typeArgs = new Class[1];typeArgs[0] = String.class;Constructor pkgParserCt = pkgParserCls.getConstructor(typeArgs);Object[] valueArgs = new Object[1];valueArgs[0] = filePath;Object pkgParser = pkgParserCt.newInstance(valueArgs);DisplayMetrics metrics = new DisplayMetrics();metrics.setToDefaults();typeArgs = new Class[4];typeArgs[0] = File.class;typeArgs[1] = String.class;typeArgs[2] = DisplayMetrics.class;typeArgs[3] = Integer.TYPE;Method pkgParser_parsePackageMtd = pkgParserCls.getDeclaredMethod("parsePackage", typeArgs);valueArgs = new Object[4];valueArgs[0] = new File(filePath);valueArgs[1] = filePath;valueArgs[2] = metrics;valueArgs[3] = 0;Object pkgParserPkg = pkgParser_parsePackageMtd.invoke(pkgParser, valueArgs);Field appInfoFld = pkgParserPkg.getClass().getDeclaredField("applicationInfo");ApplicationInfo info = (ApplicationInfo) appInfoFld.get(pkgParserPkg);Class assetMagCls = Class.forName(PATH_AssetManager);Constructor assetMagCt = assetMagCls.getConstructor((Class[]) null);Object assetMag = assetMagCt.newInstance((Object[]) null);typeArgs = new Class[1];typeArgs[0] = String.class;Method assetMag_addAssetPathMtd = assetMagCls.getDeclaredMethod("addAssetPath", typeArgs);valueArgs = new Object[1];valueArgs[0] = filePath;assetMag_addAssetPathMtd.invoke(assetMag, valueArgs);// 具体的activityy实例Resources res = ManagerActivity.this.getResources();typeArgs = new Class[3];typeArgs[0] = assetMag.getClass();typeArgs[1] = res.getDisplayMetrics().getClass();typeArgs[2] = res.getConfiguration().getClass();Constructor resCt = Resources.class.getConstructor(typeArgs);valueArgs = new Object[3];valueArgs[0] = assetMag;valueArgs[1] = res.getDisplayMetrics();valueArgs[2] = res.getConfiguration();res = (Resources) resCt.newInstance(valueArgs);CharSequence label = null;if (info.labelRes != 0) {label = res.getText(info.labelRes);}if (info.icon != 0) {dr = res.getDrawable(info.icon);}} catch (Exception e) {e.printStackTrace();}}return dr;}

?

热点排行