Android获取其他包的Context实例然后干坏事

http://blog.csdn.net/wangshione/article/details/6062359

分类: Android技术 508人阅读 评论(0) 收藏 举报

Android中有Context的概念,想必大家都知道。Context可以做很多事情,打开activity、发送广播、打开本包下文件夹和数据库、获取classLoader、获取资源等等。如果我们得到了一个包的Context对象,那我们基本上可以做这个包自己能做的大部分事情。

那我们能得到吗?很高兴的告诉你,能!
Context有个createPackageContext方法,可以创建另外一个包的上下文,这个实例不同于它本身的Context实例,但是功能是一样的。


这个方法有两个参数:
1。packageName 包名,要得到Context的包名
2。flags 标志位,有CONTEXT_INCLUDE_CODE和CONTEXT_IGNORE_SECURITY两个选项。CONTEXT_INCLUDE_CODE的意思是包括代码,也就是说可以执行这个包里面的代码。CONTEXT_IGNORE_SECURITY的意思是忽略安全警告,如果不加这个标志的话,有些功能是用不了的,会出现安全警告。


下面给个小例子,执行另外一个包里面的某个类的方法。
另外一个包的包名是chroya.demo,类名Main,方法名print,代码如下:

Java代码
  1. packagechroya.demo;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. importandroid.util.Log;
  5. classMainextendsActivity{
  6. @Override
  7. publicvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. }
  10. publicvoidprint(Stringmsg){
  11. Log.d("Main","msg:"+msg);
  12. }
  13. }

本包的调用Main的print方法的代码块如下:

Java代码
  1. Contextc=createPackageContext("chroya.demo",Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);
  2. //载入这个类
  3. Classclazz=c.getClassLoader().loadClass("chroya.demo.Main");
  4. //新建一个实例
  5. Objectowner=clazz.newInstance();
  6. //获取print方法,传入参数并执行
  7. Objectobj=clazz.getMethod("print",String.class).invoke(owner,"Hello");

ok,这样,我们就调用了chroya.demo包的Main类的print方法,执行结果,打印出了Hello。

怎么样,这只是一个调用其他包的代码的例子,我们获取到Context,还可以做很多事情,当然,题目所说的坏事,还是不要做为好。

更多相关文章

  1. 《第一行代码——Android》
  2. Android10共享文件总是读取不到文件,文件资源不存在!
  3. Android(安卓)ListView移动至指定行
  4. 跑马灯
  5. Android之collection(集合)
  6. JS判断Android、iOS或浏览器的多种方法(四种方法)
  7. Android学习之文件存储
  8. Android的消息机制,用Android线程间通信的Message机制,Android中Ha
  9. 详解Android(安卓)触摸事件处理和传递过程的来龙去脉

随机推荐

  1. Android各种资源详解
  2. 详解 Android(安卓)的 Activity 组件
  3. Android(安卓)自己动手写ListView学习其
  4. Android中文合集(5)(126+8篇)(chm格式)
  5. 用Android(安卓)NDK r6编译boost 1.47
  6. 从Android界面开发谈起
  7. Android的5层平台架构
  8. Android(安卓)Animation
  9. android无framework Java应用开发
  10. Android常用布局