以前研究Window和WindowManager的工作机制时会出现找不到IWindowManager和IWindowSession还有IWindow这个几个类,后来发现在SDKplatforms/android-16/sources/java/android/view下面有几个aidl文件,但是高版本的都找不到,被隐藏掉了,研究源码的话可以参照这几个aidl文件,但是Android确实隐藏了一些类,至于为什么这得问API的设计人员了。

    了解Java反射机制的撸涩这里应该明白怎么使用这些隐藏的类,既然知道类名和里面的接口,不多说了,例如在模拟按键处理时用到了:

  

    IBinder wmbinder = ServiceManager.getService( "window" );  final IWindowManager wm = IWindowManager.Stub.asInterface( wmbinder );  需要引入的类是:  import android.os.ServiceManager;  import android.view.IWindowManager;
     尴尬了,没有类可以让你导入,怎么办,重写呗,引入低版本的aidl文件到你的工程中,替换里面的实现方法,处理错误后生成自己的ServiceManager和IWindowManager
  try{  Object object = new Object();  Method getService = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);  Object obj = getService.invoke(object, new Object[]{new String("window")});  //System.out.println(obj.toString());  windowMger = IWindowManager.Stub.asInterface((IBinder)obj);  }catch(ClassNotFoundException ex){  //ignored  }catch(NoSuchMethodException ex){  //ignored  }catch(IllegalAccessException ex){  //ignored  }catch(InvocationTargetException ex){  //ignored  }
本文转自http://edu.gamfe.com/tutor/d/37656.html


更多相关文章

  1. 低版本android project在高版本ADK中运行方法
  2. android创建隐藏文件或者文件夹,并对其读写操作
  3. [基础知识]全面认识AndroidManifest.xml文件(二)
  4. android下修改hosts文件不起作用(无效)的解决办法
  5. Android百度地图——定位SDK(版本v3.1)(二)
  6. android 模拟器手机如何添加文件到sd卡
  7. android多apk共享私有文件
  8. ANDROID资源文件
  9. Android读写文件正确实行方法介绍

随机推荐

  1. Linux内核发送构造数据包的方式
  2. 问答-什么是负载均衡原理?
  3. 问答-服务器集群负载均衡原理?
  4. 单点登录最简单的方法
  5. MongoDB Go Driver使用帮助文档
  6. vmware如何将主机硬盘挂载到虚拟机
  7. MongoDB 排序内存超过 32M 限制
  8. Ubuntu中安装vmware tools工具
  9. MongoDB基础命令及操作 (仅学习)
  10. Oralce数据库设计规范V3