方法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">
- 进行系统签名
...网上有资料,不赘述了