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. JS判断Android、iOS或浏览器的多种方法(四种方法)
  3. Android SDK 源代码编译
  4. android布局实例代码
  5. android相对布局实例—登录界面
  6. Android View onMeasure 方法
  7. Android Studio 3.0以后打包修改文件名方法
  8. 【Android】android开发过程遇到的问题以及解决方法总结

随机推荐

  1. 不能创建处理器 Can't create handler in
  2. android 根据apk文件获取包名等信息 已经
  3. Android监听程序的安装和卸载
  4. Android中Rect和RectF的区别
  5. android下webview实现H5 html标签 input
  6. 最新Android(安卓)出现Please ensure tha
  7. Android之Retrofit实现Log日志输出
  8. Android拍照调用系统相册仿微信封装总结,
  9. Android(安卓)菜单(OptionMenu)大全 建立
  10. Android(安卓)的一些命令(补充中..)