Android API中隐藏的类使用(例如IWindowManager)

     以前研究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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值