android Tether 分析
最近研究Android下有线网络的DHCP和路由方案,分析了一些Android 共享网络管理的有关代码。涉及以下文件:
ConnectivityService.java
NetworkmanagementService.java,
TetherSetting.java
Tethering.java
当用户点击设置应用中的LAN 共享 checkbox按钮后,调用了TetherSetting.java中的OnPreferenceClick(),它 调用setUsbTethering(),它调用cm.setUsbTethering()其中cm是IConnectivityManager的实例,cm调用了ConnectivityService.java中实现,即setUsbTethering(),它又调用Tethering.java中的setUsbTethering(),它又调用Tethering.java中的tetherUsb()中的NMService.startTethering(),它又调用NetworkManagementService.java中的startTethering()函数,它又调用了doCommand(),它又调用了hal层的netd接口,netd中有commandListener.cpp实现,它又调用了TetherController.cpp中的startTethering接口,最后调用dnsmasq,去实现。
在设置应用中的网络共享栏的布局文件对应于packages/apps/Settings/res/xml/tether_prefs.xml,其中定义了界面文字对应的key 值,在TetherSetting.java中对xml文件中按照字段进行获取和初始化。其中key值,Java文件和xml文件要保持一致,否则preference与对应的CheckboxPreference就不一致了
更多相关文章
- android accessibility
- Android系统权限和root权限
- 手动root android 模拟器(emulator)详细过程
- Android(安卓)解决APN无权限问题
- android自APP打开高德,百度,腾讯地图APP调用(整理非原创)
- android 系统目录
- 浅谈Java中Collections.sort对List排序的两种方法
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程