zoukankan      html  css  js  c++  java
  • Android : 有线DHCP信息保存到属性值

    修改源码路径:frameworksaseservices etjavaandroid etdhcpDhcpClient.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();
        }
  • 相关阅读:
    I2C调试
    linux读取cpu温度
    看react全家桶+adtd有感
    react学习1(搭建脚手架,配置less,按需引入antd等)
    去掉console.log,正式环境不能有console.log
    Vue的minix
    数组去重我总结的最常用的方法,其他不常用就不写了
    inline-block bug解决方法
    vue中使用less/scss(这是2.0 3.0就不需要手动配置了只需要安装依赖就行了)
    Vue 调用微信扫一扫功能
  • 原文地址:https://www.cnblogs.com/blogs-of-lxl/p/12202939.html
Copyright © 2011-2022 走看看