Android : 有线DHCP信息保存到属性值

Android : 有线DHCP信息保存到属性值,第1张

概述修改源码路径:frameworks\base\services\net\java\android\net\dhcp\DhcpClient.java1、定义对应属性变量://PatchBegin-SheldonprivatestaticfinalStringPROPERTY_DHCPCLIENT_IP="dhcp.eth0.ipaddress";privatestaticfinalStringPROP

修改源码路径: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信息保存到属性值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1067830.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存