Android : 有线DHCP信息保存到属性值
修改源码路径:frameworks\base\services\net\java\android\net\dhcp\DhcpClient.java
1、定义对应属性变量:
// Patch Begin - Sheldon private static final String PROPERTY_DHCPCLIENT_IP = "dhcp.eth0.ipaddress"; private static final String PROPERTY_DHCPCLIENT_MASK = "dhcp.eth0.mask"; private static final String PROPERTY_DHCPCLIENT_GATEWAY = "dhcp.eth0.gateway"; private static final String PROPERTY_DHCPCLIENT_DNS1 = "dhcp.eth0.dns1"; private static final String PROPERTY_DHCPCLIENT_DNS2 = "dhcp.eth0.dns2"; // Patch end
2.从acceptDhcpResults方法的results参数中提取IP地址、子网掩码、网关、DNS等信息。注:子网掩码是通过PrefixLength转换所得。
private void acceptDhcpResults(DhcpResults results, String msg) { mDhcpLease = results; mOffer = null; Log.d(TAG, msg + " lease: " + mDhcpLease); // Patch Begin - Sheldon if (mIfaceName != null && (mIfaceName.equals("eth0") || mIfaceName.equals("veth0"))) { try { String ipAddr = results.ipAddress.getAddress().getHostAddress(); int preFixLen = results.ipAddress.getPrefixLength(); // Convert PrefixLength to subnet mask int value = 0xffffffff << (32 - preFixLen); byte[] bytes = new byte[]{ (byte)(value >> 24), (byte)(value >> 16 & 0xff), (byte)(value >> 8 & 0xff), (byte)(value & 0xff)}; InetAddress netAddr = InetAddress.getByAddress(bytes); String subNetMask = netAddr.getHostAddress(); String gateWay = deleteCharString(results.gateway.toString(), '/'); String dns1 = deleteCharString(results.dnsServers.get(0).toString(), '/'); String dns2 = deleteCharString(results.dnsServers.get(1).toString(), '/'); SystemProperties.set(PROPERTY_DHCPCLIENT_IP, ipAddr); SystemProperties.set(PROPERTY_DHCPCLIENT_MASK, subNetMask); SystemProperties.set(PROPERTY_DHCPCLIENT_GATEWAY, gateWay); SystemProperties.set(PROPERTY_DHCPCLIENT_DNS1, dns1); SystemProperties.set(PROPERTY_DHCPCLIENT_DNS2, dns2); } catch (Exception e) { e.printStackTrace(); } } //Patch end notifySuccess(); }
分类:
Android 系统开发
标签:
TV开发
posted on 2020-01-16 19:44 sheldon_blogs 阅读(959) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY