android 第三方jar库 反射得到自己的资源ID
来源:互联网 发布:淘宝云客服选班网站 编辑:程序博客网 时间:2024/06/05 06:20
做jar,jar代码获取资源不能直接引用 R.xx.name,
有两种方法:
1.通过方法: int android.content.res.Resources.getIdentifier(String name,String defType, String defPackage)
2.通过反射
第一种方法比较常见,主要看第二种方法:
public class ResoureExchange {private static final String TAG = ResoureExchange.class.getName();private static ResoureExchange self;private Context mContext;private static Class<?> CDrawable = null;private static Class<?> CLayout = null;private static Class<?> CId = null;private static Class<?> CAnim = null;private static Class<?> CStyle = null;private static Class<?> CString = null;private static Class<?> CArray = null;public static ResoureExchange getInstance(Context context){if(self == null){self = new ResoureExchange(context);}return self;}private ResoureExchange(Context context){this.mContext = context.getApplicationContext();try{CDrawable = Class.forName(this.mContext.getPackageName() + ".R$drawable");CLayout = Class.forName(this.mContext.getPackageName() + ".R$layout");CId = Class.forName(this.mContext.getPackageName() + ".R$id");CAnim = Class.forName(this.mContext.getPackageName() + ".R$anim");CStyle = Class.forName(this.mContext.getPackageName() + ".R$style");CString = Class.forName(this.mContext.getPackageName() + ".R$string");CArray = Class.forName(this.mContext.getPackageName() + ".R$array");}catch(ClassNotFoundException e){Log.i(TAG,e.getMessage());}}public int getDrawableId(String resName){return getResId(CDrawable,resName);}public int getLayoutId(String resName){return getResId(CLayout,resName);}public int getIdId(String resName){return getResId(CId,resName);}public int getAnimId(String resName){return getResId(CAnim,resName);}public int getStyleId(String resName){return getResId(CStyle,resName);}public int getStringId(String resName){return getResId(CString,resName);}public int getArrayId(String resName){return getResId(CArray,resName);}private int getResId(Class<?> resClass,String resName){if(resClass == null){Log.i(TAG,"getRes(null," + resName + ")");throw new IllegalArgumentException("ResClass is not initialized. Please make sure you have added neccessary resources. Also make sure you have " + this.mContext.getPackageName() + ".R$* configured in obfuscation. field=" + resName);}try {Field field = resClass.getField(resName);return field.getInt(resName);} catch (Exception e) {Log.i(TAG, "getRes(" + resClass.getName() + ", " + resName + ")");Log.i(TAG, "Error getting resource. Make sure you have copied all resources (res/) from SDK to your project. ");Log.i(TAG, e.getMessage());} return -1;}}
直接看代码,一目了然。[来源于反编译友盟统计jar]
- android 第三方jar库 反射得到自己的资源ID
- android 第三方jar库 反射得到自己的资源ID
- 得到GitHub第三方库的jar包
- 利用反射机制,通过资源名字得到资源的ID
- Android studio 如何创建创建第三方库生成自己的jar(Module)
- Android studio 如何创建创建第三方库生成自己的jar
- Android中通过反射获取资源Id(特别用在自己定义一个工具将其打成.jar包时,特别注意资源的获取)
- Android中通过反射获取资源Id(特别用在自己定义一个工具将其打成.jar包时,特别注意资源的获取)
- Android引入第三方jar包的方法及如何将自己的代码封装成一个jar库
- 得到最新Github第三方库jar包,适用于Ecplise
- Android提供第三方jar包时资源打包
- 用反射访问第三方的jar文件
- Android生成和引用第三方库(jar)的…
- Android生成和引用第三方库(jar)的…
- Android导入第三方库的方法 jar方法
- Android引入第三方jar的问题
- Android Studio第三方jar的使用
- android studio中导入第三方jar包和第三方库文件的方法
- java
- windowsXP下搭建JAVA环境教程
- JAVA的helloworld
- 让UltraEdit成为java编译器
- 由zImage生成uImage
- android 第三方jar库 反射得到自己的资源ID
- 如何进行系统配置 ——了解DOS下的内存
- Ubuntu 11.04 NFS 配置
- ubuntu下动态链接库的编译和使用实例
- 编译、裁剪、安装、删除 Ubuntu内核和模块管理
- 裁剪Ubuntu内核和模块管理2
- ubuntu10.04 安装配置tftp服务
- Hadoop安装-jdk替换
- DM6446 uboot分析