From 86116427931cc724ae1e3105738a34e0619ca287 Mon Sep 17 00:00:00 2001 From: 562935844@qq.com Date: 星期二, 04 四月 2023 16:12:47 +0800 Subject: [PATCH] 增加网关未上云密钥为空的问题处理 --- HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/IpUtils.java | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 150 insertions(+), 4 deletions(-) diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/IpUtils.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/IpUtils.java index 832cf2f..8fa0785 100644 --- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/IpUtils.java +++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/IpUtils.java @@ -3,6 +3,10 @@ import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.text.TextUtils; +import android.util.Log; + +import com.hdl.sdk.connect.config.HDLLinkConfig; import java.net.InetAddress; import java.net.InterfaceAddress; @@ -15,10 +19,10 @@ */ public class IpUtils { - /** - * @return 骞挎挱鍦板潃 - */ - public static String getBroadcastAddress() { +// /** +// * @return 骞挎挱鍦板潃 +// */ + /*public static String getBroadcastAddress() { // try { // for (Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces(); // niEnum.hasMoreElements(); ) { @@ -34,6 +38,45 @@ // } catch (SocketException e) { // e.printStackTrace(); // } + return "255.255.255.255"; + }*/ + + + /** + * @return 骞挎挱鍦板潃 + */ + public static synchronized String getBroadcastAddress() { + try { + if (!TextUtils.isEmpty(HDLLinkConfig.getInstance().getNetworkName())) { + for (Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces(); + niEnum.hasMoreElements(); ) { + NetworkInterface ni = niEnum.nextElement(); + if (!ni.isLoopback() && ni.getName().equalsIgnoreCase(HDLLinkConfig.getInstance().getNetworkName())) { + for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) { + if (interfaceAddress.getBroadcast() != null) { + Log.d("TAG", "----->ni.getName()= " + ni.getName() + " ip= " + interfaceAddress.getBroadcast().toString().substring(1)); + return interfaceAddress.getBroadcast().toString().substring(1); + } + } + } + } + + for (Enumeration<NetworkInterface> niEnum = NetworkInterface.getNetworkInterfaces(); + niEnum.hasMoreElements(); ) { + NetworkInterface ni = niEnum.nextElement(); + if (!ni.isLoopback()) { + for (InterfaceAddress interfaceAddress : ni.getInterfaceAddresses()) { + if (interfaceAddress.getBroadcast() != null) { + Log.d("TAG", "----->ip= " + interfaceAddress.getBroadcast().toString().substring(1)); + return interfaceAddress.getBroadcast().toString().substring(1); + } + } + } + } + } + } catch (SocketException e) { + e.printStackTrace(); + } return "255.255.255.255"; } @@ -86,4 +129,107 @@ ((i >> 16) & 0xFF) + "." + (i >> 24 & 0xFF); } + + private static String getWifiManagerAddress(Context context) { + try { + if (context != null) { + WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + if (wifiManager != null && wifiManager.isWifiEnabled()) { + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + int ipAddress = wifiInfo.getIpAddress(); + return intToIp(ipAddress); + } + } + } catch (Exception ignored) { + } + return null; + } + + public static String getWifiIpV4Address(Context context) { + try { + //鐩存帴浠巜ifiManager鑾峰彇 + String managerAddress = getWifiManagerAddress(context); + if (!TextUtils.isEmpty(managerAddress)) { + return managerAddress; + } + + Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces(); + while (enumeration.hasMoreElements()) { + NetworkInterface network = enumeration.nextElement(); + if (network == null || network.isVirtual() || !network.isUp() || network.isLoopback() || !network.getName().equalsIgnoreCase("eth0")) { + continue; + } else { + Enumeration<InetAddress> addresses = network.getInetAddresses(); + while (addresses.hasMoreElements()) { + InetAddress address = addresses.nextElement(); + if (!address.isLoopbackAddress() && !address.isAnyLocalAddress() + && !address.isLinkLocalAddress()) { + String hostAddress = address.getHostAddress(); + if (hostAddress != null) { + boolean isIPv4 = hostAddress.indexOf(':') < 0; + if (isIPv4) return hostAddress; + } + + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + public static String getEth0IpV4Address() { + try { + Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces(); + while (enumeration.hasMoreElements()) { + NetworkInterface network = enumeration.nextElement(); + if (network == null || network.isVirtual() || !network.isUp() || network.isLoopback() || !network.getName().equalsIgnoreCase("eth0")) { + continue; + } else { + Enumeration<InetAddress> addresses = network.getInetAddresses(); + + while (addresses.hasMoreElements()) { + InetAddress address = addresses.nextElement(); + if (!address.isLoopbackAddress() && !address.isAnyLocalAddress() + && !address.isLinkLocalAddress()) { + String hostAddress = address.getHostAddress(); + if (hostAddress != null) { + boolean isIPv4 = hostAddress.indexOf(':') < 0; + if (isIPv4) return hostAddress; + } + + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + /** + * @return 鑾峰彇鍏ㄩ儴鏈夋晥ip鍦板潃, 浼樺厛杩斿洖鏈夌嚎ip + */ + public static String getIpV4Address(Context context) { + + try { + String eth0IpV4Address = getEth0IpV4Address(); + if (!TextUtils.isEmpty(eth0IpV4Address)) { + return eth0IpV4Address; + } + String wifiIpV4Address = getWifiIpV4Address(context); + if (!TextUtils.isEmpty(wifiIpV4Address)) { + return wifiIpV4Address; + } + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } } -- Gitblit v1.8.0