最近研究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就不一致了

更多相关文章

  1. android accessibility
  2. Android系统权限和root权限
  3. 手动root android 模拟器(emulator)详细过程
  4. Android(安卓)解决APN无权限问题
  5. android自APP打开高德,百度,腾讯地图APP调用(整理非原创)
  6. android 系统目录
  7. 浅谈Java中Collections.sort对List排序的两种方法
  8. NPM 和webpack 的基础使用
  9. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程

随机推荐

  1. 如何在Mac上更新Chrome?
  2. 我们不一样!运维自动化典型案例观止
  3. Redis6 终于还是迎来了多线程版本!
  4. 我不配有五一
  5. 喂,业余草吗?你的生死簿管理系统我出10万买
  6. 基于 Python 的企业级运维平台开发实战!
  7. 又一个程序员“倒”下,Pandownload作者被
  8. Github 封禁了有伊朗外部贡献者的项目!
  9. 程序员又开始了疯狂的薅羊毛!
  10. 恒丰银行:金融云中 x86 裸机服务实践