#图标

读取apk程序包的内容

一、对于已安装应用,只需要getPackageManager().getInstalledPacked(int flags)即可得到PackageInfo.

packageInfo.applicationInto中可以得到所有信息。
注:区别系统应用和用户应用:applicationInfo.flags & ApplicationInfo.FLAG_SYSTEMSTEM
二、对于未安装应用(apk文件)
使用packageManager.getPackageArchiveInfo(String filePath,int flags),只能得到部分信息。
所有int形式的资源(label,icon等)都是无法得到的,需要使用反射机制用到隐藏接口
方法如下:
```Resources res=getResources(); AssetManager asm=new AssetManager();//隐藏api asm.addAssetPath(String apkfilePath);//隐藏api res=new Resources(asm,res.getDisplayMetrics(),res.getConfiguration());//隐藏api```
然后使用res.getString(int resId)   res.getDrawable(int resId)即可得到apk文件内部的资源。(此处资源id可通过上面的公开方法得到)
关键点就在于assetManager.addAssetPath(String apkfilePath)此方法。
现在要做的就是使用反射机制实现上面的隐藏api。
具体反射实现代码如下:
```Class asm_cls = Class.forName("android.content.res.AssetManager"); Object asm_obj = asm_cls.getDeclaredConstructor((Class[]) null).newInstance((Class[]) null); asm_obj.getClass() .getDeclaredMethod("addAssetPath", new Class[] { String.class }) .invoke(asm_obj, new Object[] { filePath }); Resources res=getResources(); res = Resources.class.getDeclaredConstructor( new Class[] { asm_obj.getClass(), res.getDisplayMetrics().getClass(), res.getConfiguration().getClass() }) .newInstance(new Object[] { asm_obj, res.getDisplayMetrics(), res.getConfiguration() }); return res;``` res.getDisplayMetrics(), res.getConfiguration() }); return res;```
res.getString(applicaiontInfo.labelRes);
res.getDrawable(applicationInfo.icon);

让桌面图标文字背景透明的解决办法

本文概要:xp环境下,让桌面图标下面的文字背景变透明的办法

可能这里面的一些办法你看过,但还是希望你把每一个都看完,都试一遍,肯定会好的。

1、桌面右键--排列图标--锁定WEB项目 去掉这选项
2、控制面板--辅助选项--显示 去掉高对比度
3、我的电脑右键--属性--高级--性能(设置)--为图标设置阴影 选中
4、注册表(运行regedit) --HKEY_CURRENT_U

1 / 1