搜索
您的当前位置:首页正文

笔记:以太网环境下,设备网络参数的读取与设置

来源:二三四教育网

方法1:反射

因Android版本差异和Rom差异,可能无法成功调用
不建议

获取信息

        Object mEthManager;
        Object mInterfaceInfo;
        Object invokeret;
        try {
            mEthManager =  "getInstance", null);
             mEthManager, "setEnabled", new Object[]{true});
            mInterfaceInfo =  mEthManager, "getSavedConfig", null);
            invokeret =  mInterfaceInfo, "getIpAddress", null);
            String ip = invokeret.toString();
            invokeret =  mInterfaceInfo, "getNetMask", null);
            String mask = invokeret.toString();
            invokeret =  mInterfaceInfo, "getGateWay", null);
            String gate = invokeret.toString();
            invokeret =  mInterfaceInfo, "getDnsAddr", null);
            String dns = invokeret.toString();
            invokeret =  mInterfaceInfo, "getHwaddr", null);
            String mac = getMacAddress();
            Logger.e("mInterfaceInfo(getIp)-->\n" + ip + ";" + mask + ";" + gate + ";" + dns + ";" + mac);
        } catch (Exception e1) {
            e1.printStackTrace();
            Logger.e("mInterfaceInfo(getIp(E))-->" + e1.getMessage());
        }

设置

        mEthManager = EthernetManager.getInstance();
        mEthManager.setEnabled(true);
        Object mInterfaceInfo =  mEthManager, "getSavedConfig", null);
         mInterfaceInfo, "setIpAddress", new Object[]{"192.168.2.180"});
         mInterfaceInfo, "setNetMask", new Object[]{"255.255.255.0"});
         mInterfaceInfo, "setDnsAddr", new Object[]{"192.168.2.1"});
         mInterfaceInfo, "setGateWay", new Object[]{"192.168.2.1"});
        Class<?> ownerClass = 
        Method[] methods = ownerClass.getMethods();
        for (Method method : methods) {
            if (method.getName().toLowerCase().equals("updatedevinfo")) {
                method.invoke(mEthManager, mInterfaceInfo);
                break;
            }
        }
         mEthManager, "setEnabled", new Object[]{true});

方法2:Jar包

也不是很完善,Jar包是从系统源码编译的;使用过程中发现,个别设备无法无此类

获取信息

API很明显

EthernetManager mEthManager = EthernetManager.getInstance();
mEthManager.setEnabled(true);
EthernetDevInfo mInterfaceInfo =EthManager.getSavedConfig();
Logger.e("mInterfaceInfo-->" 
        + mInterfaceInfo.getIpAddress() + ";"
        + mInterfaceInfo.getNetMask() + ";"
        + mInterfaceInfo.getGateWay() + ";"
        + mInterfaceInfo.getDnsAddr() + ";"
        + getMacAddress());

设置

        mEthManager = EthernetManager.getInstance();
        mEthManager.setEnabled(true);
        EthernetDevInfo mInterfaceInfo = mEthManager.getSavedConfig();
        mInterfaceInfo.setConnectMode(EthernetDevInfo.ETHERNET_CONN_MODE_MANUAL);
        mInterfaceInfo.setIpAddress("192.168.2.179");
        mInterfaceInfo.setNetMask("255.255.255.0");
        mInterfaceInfo.setDnsAddr("192.168.2.1");
        mInterfaceInfo.setGateWay("192.168.2.1");
        //mInterfaceInfo.setHwaddr("");
        mEthManager.updateDevInfo(mInterfaceInfo);

方法3:shell

待补充

权限
  • 设置sharedUserId
<?xml version="1.0" encoding="utf-8"?>
<manifest 
    package="com.**.**"
    android:sharedUserId="android.uid.system">
  • 进行系统签名
    ...网上有资料,不赘述了

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Top