android中反射技术使用实例

本文介绍了如何在Android中使用反射技术,包括访问其他包名下的数据和方法,调用隐藏API,以及修改系统资源。通过反射,开发者可以控制Toast的显示和隐藏,以及改变ListView的快速滑块图像。反射机制允许程序在运行时检查和操作内部属性,提供了动态生成实例、改变字段内容和调用方法的能力。文中提到了反射相关的Class类和Method对象的使用。
摘要由CSDN通过智能技术生成
在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义.反射 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。Java 的反射机制的实现要借助于4个类:class,Constructor,Field,Method;其中class代表的时类对 象,Constructor-类的构造器对象,Field-类的属性对象,Method-类的方法对象。

 1.通过反射技术可以访问到其他包名下数据方法等,这些为一些APK换皮肤提供了方便

首先初始化skinContext


 try {  
            skinContext = this.createPackageContext("com.skin",   
                    CONTEXT_IGNORE_SECURITY|CONTEXT_INCLUDE_CODE);  
        } catch (NameNotFoundException e) {  
            // TODO Auto-generated catch block  
            skinContext=null;  
            e.printStackTrace();  
        }  

可以通过下面的方法访问到指定包名下的资源ID
/** 
     * 取得对应包的所有资源的ID 
     * 存在MAP中 
     * @param packageName 
     * @return 
     */  
    private Map<String,Map<String, Object>> getSkinResourcesId(String packageName)  
    {  
        Map<String, Object> temp =  null;  
        Map<String,Map<String, Object>> resMap =new HashMap<String,Map<String,Object>>();  
        try {  
                //取得皮肤包中的R文件  
                Class<?> rClass = skinContext.getClassLoader().loadClass(packageName+".R");  
                //取得记录各种资源的ID的类  
                Class<?>[] resClass =rClass.getClasses();  
                String className,resourceName;  
                int resourceId=0;  
                for(int i=0;i<resClass.length;i++)  
                {  
                    className = resClass[i].getName();  
                    //取得该类的资源  
                    Field field[] = resClass[i].getFields();  
                    for(int j =0;j < field.length; j++)  
                    {  
                 
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值