局域网的配置,之前查找了很多方法都是关于EthernetManager(已隐藏,无法直接调用),试过很多种但是还是没成功调到过这个对象,然后直接利用adb 命令获取
获取以太网的连接信息
1.获取所有有效网关
/** * @return 获取所有有效的网卡 */
public static String[] getAllNetInterface() {
ArrayList<String> availableInterface = new ArrayList<>();
String[] interfaces = null;
try {
//获取本地设备的所有网络接口
Enumeration nis = NetworkInterface.getNetworkInterfaces();
InetAddress ia = null;
while (nis.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) nis.nextElement();
Enumeration<InetAddress> ias = ni.getInetAddresses();
while (ias.hasMoreElements()) {
ia = ias.nextElement();
if (ia instanceof Inet6Address) {
continue;// skip ipv6
}
String ip = ia.getHostAddress();
// 过滤掉127段的ip地址
if (!"127.0.0.1".equals(ip)) {
if (ni.getName().substring(0, 3).equals("eth")) { //筛选出以太网
availableInterface.add(ni.getName());
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
int size = availableInterface.size();
if (size > 0) {
interfaces = new String[size];
for (int i = 0; i < size; i++) {
interfaces[i] = availableInterface.get(i);
}
}
return interfaces;
}
2.获取指定网卡ip
/** * 获取指定网卡ip * * @param netInterface * @return * @throws SocketException */
public static String getIpAddress(String netInterface) throws SocketException {
String hostIp = null;
try {
Enumeration nis = NetworkInterface.getNetworkInterfaces();
InetAddress ia = null;
while (nis.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) nis.nextElement();
if (ni.getName().equals(netInterface)) {
Enumeration<InetAddress> ias = ni.getInetAddresses();
while (ias.hasMoreElements()) {
ia = ias.nextElement();
if (ia instanceof Inet6Address) {
continue;// skip ipv6
}
String ip = ia.getHostAddress();
// 过滤掉127段的ip地址
if (!"127.0.0.1".equals(ip)) {
hostIp = ia.getHostAddress();
break;
}
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
return hostIp;
}
3.获取DNS地址 —-“getprop dhcp.eth0.dns1”
/** * 根据adb shell命令获取 * DNS地址 * * @param name网卡名称 * @return */
public static String getLocalDNS(String name) {
Process cmdProcess = null;
BufferedReader reader = null;
String dnsIP = "";
try {
cmdProcess = Runtime.getRuntime().exec("getprop dhcp." + name + ".dns1");
reader = new BufferedReader(new InputStreamReader(cmdProcess.getInputStream()));
dnsIP = reader.readLine();
return dnsIP;
} catch (IOException e) {
return null;
} finally {
try {
reader.close();
} catch (IOException e) {
}
cmdProcess.destroy();
}
}
4.获取子网掩码—-“getprop dhcp.eth0.mask”
/** * 获取掩码 * * @param name * @return */
public static String getLocalMask(String name) {
Process cmdProcess = null;
BufferedReader reader = null;
String dnsIP = "";
try {
cmdProcess = Runtime.getRuntime().exec("getprop dhcp." + name + ".mask");
reader = new BufferedReader(new InputStreamReader(cmdProcess.getInputStream()));
dnsIP = reader.readLine();
return dnsIP;
} catch (IOException e) {
return null;
} finally {
try {
reader.close();
} catch (IOException e) {
}
cmdProcess.destroy();
}
}
5.网关地址—-“getprop dhcp.eth0.gateway”
/** * 获取网关地址 * * @param name * @return */
public static String getLocalGATE(String name) {
Process cmdProcess = null;
BufferedReader reader = null;
String dnsIP = "";
try {
cmdProcess = Runtime.getRuntime().exec("getprop dhcp." + name + ".gateway");
reader = new BufferedReader(new InputStreamReader(cmdProcess.getInputStream()));
dnsIP = reader.readLine();
return dnsIP;
} catch (IOException e) {
return null;
} finally {
try {
reader.close();
} catch (IOException e) {
}
cmdProcess.destroy();
}
}