利用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 :如需转载请自行联系原作者

相关文章
|
3天前
|
JavaScript Java BI
Java毕设之新生报到系统的设计与实现
Java毕设之新生报到系统的设计与实现
11 3
|
2天前
|
Android开发
Android 如何将定制的Launcher成为系统中唯一的Launcher
Android 如何将定制的Launcher成为系统中唯一的Launcher
12 2
|
1天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
12 5
|
1天前
|
存储 Java API
java对接IPFS系统-以nft.storage为列
java对接IPFS系统-以nft.storage为列
11 2
|
1天前
|
监控 前端开发 Java
Java基于B/S医院绩效考核管理平台系统源码 医院智慧绩效管理系统源码
医院绩效考核系统是一个关键的管理工具,旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标,还能提升医疗服务质量,增强患者满意度,并促进员工的专业成长
9 0
|
2天前
|
Java 云计算
Java智能区域医院云HIS系统SaaS源码
云HIS提供标准化、信息化、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。优化就医、管理流程,提升患者满意度、基层首诊率,通过信息共享、辅助诊疗等手段,提高基层医生的服务能力构建和谐的基层医患关系。
16 2
|
2天前
|
Java
Java内部类
Java内部类
8 2
|
2天前
|
Java 数据安全/隐私保护
java中异常处理机制
java中异常处理机制
9 1
|
2天前
|
前端开发 Java 关系型数据库
Java医院绩效考核系统源码B/S架构+springboot三级公立医院绩效考核系统源码 医院综合绩效核算系统源码
作为医院用综合绩效核算系统,系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
21 2
|
3天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
18 0