
修改源码路径: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 : 有线DHCP信息保存到属性值全部内容,希望文章能够帮你解决Android : 有线DHCP信息保存到属性值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)