//访问某个属性
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 }; 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());


转自:http://www.cnblogs.com/wanqieddy/archive/2011/10/25/2224200.html

更多相关文章

  1. Android GPS学习笔记—LMS初始化
  2. android kernel 初始化 2
  3. Android MediaServer初始化流程
  4. Android 初始化Setup Wizard——Provision
  5. Android 编译流程解析01-AppPlugin初始化
  6. android 软键盘隐藏 activity初始化时edittext聚焦
  7. Android GPS学习笔记—GpsLP初始化
  8. Android UI架构(四)--SurfaceFlinger的初始化.md

随机推荐

  1. android平台解析epub格式的书籍信息
  2. android评分条RatingBar自定义设置
  3. Android(安卓)Framework入门介绍
  4. Android(安卓)VideoView简单播放视频
  5. Android之fill_parent和wrap_content
  6. Android界面基本属性
  7. Android(安卓)LCD(二):LCD常用接口原理篇
  8. IntentService通过HandlerThread单独开启
  9. Android(安卓)学习笔记--android――list
  10. Android学习笔记(28):三种选择器DatePick