利用java反射机制,使用android系统的内部类成员函数

简介:
//访问某个属性
Context mmsCtx = createPackageContext( "com.android.lockscreen"
         Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); 
Class<?> maClass = Class.forName( "com.android.lockscreen.LockScreenActivity" , true , mmsCtx.getClassLoader()); 
 
Object maObject = maClass.newInstance();
Field f_mPm = maClass.getDeclaredField( "TAG" ); 
f_mPm.setAccessible( true );             
     Log.i(LOG_TAG, "___________________________________________obj:" +f_mPm.get(maObject));

  

//访问方法

         
//访问
try  {
             Context mmsCtx = createPackageContext( "com.android.lockscreen"
                     Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); 
             Class<?> maClass = Class.forName( "com.android.lockscreen.LockScreenActivity" , true , mmsCtx.getClassLoader()); 
             
             Object maObject = maClass.newInstance();
             Field f_mPm = maClass.getDeclaredField( "TAG" ); 
             
             //maClass.getDeclaredMethod("", parameterTypes);
             f_mPm.setAccessible( true );             
             Log.i(LOG_TAG, "___________________________________________obj:" +f_mPm.get(maObject));
                 
             
                 Class[] resource = new  Class[]{Context. class };
                 Object[] resourceObj = new  Object[]{mmsCtx};
                 
                 Method addsMethod = maClass.getDeclaredMethod( "getLockScreenView" , resource);
                 addsMethod.setAccessible( true );
                 
                 View addsResult = (View)addsMethod.invoke(maObject, resourceObj);
                 Log.i(LOG_TAG, "___________________________________________addsResult:" +addsResult);
                 
         } catch  (Exception e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }
 
//定义被访问
 
public  class  LockScreenActivity extends  Activity {
         
     private  String TAG = "LockScreenActivity" ;
     //private LockScreen mScreen = new LockScreen(LockScreenActivity.this);
     
     private  LockScreen getLockScreenView(Context context){
         
         Log.i(TAG, "_________________________________________context:" +context);
         return  new  LockScreen(context);
     }
     
}

  

//获取setting包的的Context 
             Context mmsCtx = createPackageContext( "com.android.settings"
                     Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); 
             //使用setting的classloader加载com.android.settings.ManageApplications类 
             Class<?> maClass = Class.forName( "com.android.settings.ManageApplications" , true , mmsCtx.getClassLoader()); 
             //创建它的一个对象 
             Object maObject = maClass.newInstance(); 
               
             /*
              * 将私有域mPm赋值。因为mPm在SizeObserver的invokeGetSize中用到了,
              * 却因为没有执行onCreate而没有初始化,所以要在此处初始化。
              */ 
             Field f_mPm = maClass.getDeclaredField( "mPm" ); 
             f_mPm.setAccessible( true );             
             f_mPm.set(maObject, mmsCtx.getPackageManager()); 
              

  

分类:  android solve

本文转自wanqi博客园博客,原文链接http://www.cnblogs.com/wanqieddy/archive/2011/10/25/2224200.html :如需转载请自行联系原作者

相关文章
|
13天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
15天前
|
存储 Java 关系型数据库
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
社区医院管理服务系统【GUI/Swing+MySQL】(Java课设)
24 1
|
15天前
|
存储 Java 关系型数据库
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
实验室设备管理系统【GUI/Swing+MySQL】(Java课设)
15 0
|
15天前
|
Java 数据库 Android开发
图书销售系统【纯控制台】(Java课设)
图书销售系统【纯控制台】(Java课设)
22 1
|
1天前
|
JavaScript Java 测试技术
基于Java的怀旧唱片售卖系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的怀旧唱片售卖系统的设计与实现(源码+lw+部署文档+讲解等)
11 5
|
4天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
20 0
接口之美,内部之妙:深入解析Java的接口与内部类
|
5天前
|
JavaScript Java 测试技术
基于Java的教师上课系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的教师上课系统的设计与实现(源码+lw+部署文档+讲解等)
21 0
|
6天前
|
Java API
Java基础—笔记—内部类、枚举、泛型篇
本文介绍了Java编程中的内部类、枚举和泛型概念。匿名内部类用于简化类的创建,常作为方法参数,其原理是生成一个隐含的子类。枚举用于表示有限的固定数量的值,常用于系统配置或switch语句中。泛型则用来在编译时增强类型安全性,接收特定数据类型,包括泛型类、泛型接口和泛型方法。
9 0
|
6天前
|
JavaScript Java 测试技术
基于Java的生鲜在线销售系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的生鲜在线销售系统的设计与实现(源码+lw+部署文档+讲解等)
23 1
|
6天前
|
JavaScript Java 测试技术
基于Java的题库管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的题库管理系统的设计与实现(源码+lw+部署文档+讲解等)
19 0