为usb网卡设置ip地址之二


private boolean setIpAndMask(String ip,String mask){
Log.i(TAG," ip=" + ip +",mask=" + mask);
// bring toggle the interfaces
IBinder b = ServiceManager.getService(Context.NETWORKMANAGEMENT_SERVICE);
INetworkManagementService service = INetworkManagementService.Stub.asInterface(b);
String[] currentIfaces = new String[0];
try {
currentIfaces = service.listInterfaces();
} catch (Exception e) {
Log.w(TAG, "listInterfaces="+e);
return false;
}

boolean found = false;
for (String currIface: currentIfaces) {
if (currIface.equals(ETH0)) {
Log.d(TAG, "eth0 iface found");
found = true;
break;
}
}
if (!found) {
Log.d(TAG, "eth0 iface NOT found");
return false;
}
InterfaceConfiguration ifcg = null;
try {
ifcg = service.getInterfaceConfig(ETH0);
if (ifcg != null) {
Log.i(TAG,"ifcg first="+ifcg);
InetAddress addr = null;
if (ifcg.addr == null || (addr = ifcg.addr.getAddress()) == null ||
addr.equals(NetworkUtils.numericToInetAddress("0.0.0.0")) ||
addr.equals(NetworkUtils.numericToInetAddress("::0"))) {
addr = NetworkUtils.numericToInetAddress(ip);
} else {
addr = NetworkUtils.numericToInetAddress(ip);
}
ifcg.interfaceFlags = ifcg.interfaceFlags.replace("down", "up");
InetAddress gw = NetworkUtils.numericToInetAddress(mask);
int prelength = computeprefixLength(gw);
Log.i(TAG,"prelength=" + prelength);
ifcg.addr = new LinkAddress(addr, prelength);
ifcg.interfaceFlags = ifcg.interfaceFlags.replace("running", "");
ifcg.interfaceFlags = ifcg.interfaceFlags.replace(" "," ");
service.setInterfaceConfig(ETH0, ifcg);
return true;
} else {
return false;
}
} catch (Exception e) {
Log.w(TAG, "setInterfaceConfig="+e);
return false;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值