Android API中隐藏的类使用(例如IWindowManager)
16lz
2021-01-23
以前研究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 更多相关文章
- 低版本android project在高版本ADK中运行方法
- android创建隐藏文件或者文件夹,并对其读写操作
- [基础知识]全面认识AndroidManifest.xml文件(二)
- android下修改hosts文件不起作用(无效)的解决办法
- Android百度地图——定位SDK(版本v3.1)(二)
- android 模拟器手机如何添加文件到sd卡
- android多apk共享私有文件
- ANDROID资源文件
- Android读写文件正确实行方法介绍