如何在Android中将设备连接到WiFi时获取蜂窝网络的IP地址

Asu*_*tes 18 networking android ip-address

有没有办法我可以同时获取Android中的WiFi和蜂窝网络的IP地址.我尝试使用很多例子,但能够获得只有WiFi网络而不是蜂窝网络的地址.我已启用WiFi和蜂窝网络设备可通过WiFi访问Internet.

这是我用来获取IP地址的代码:

    String ipAddress = null;
    try {
        for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
            NetworkInterface intf = en.nextElement();
            for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                InetAddress inetAddress = enumIpAddr.nextElement();
                if (!inetAddress.isLoopbackAddress()) {
                    ipAddress = inetAddress.getHostAddress().toString();
                    Log.i("Here is the Address",ipAddress);
                }
            }
        }
    } catch (SocketException ex) {

    }
Run Code Online (Sandbox Code Playgroud)

当设备连接到WiFi时,是否有可能获得蜂窝网络的IP地址.如果是,那么这是可行的.

Aen*_*don 14

每当您在设备上启用WiFi并且与WiFi网络建立有效连接时,无论您是否手动启用移动数据,都会暂时禁用您的移动数据.如果您没有活动的WiFi连接,则仅考虑"移动数据开/关"设置.

一些自定义ROM可以选择在连接到WiFi时保持移动连接处于活动状态(因此,如果您丢失了WiFi连接,它会更快地切换到移动设备),但仍然使用WiFi连接.

结论:由于无法同时启用WiFi和移动网络,因此无法同时获取这两个IP地址(如果可以,则只能主动使用WiFi)


sus*_*dlh 7

试试这可能是有帮助的.....

对于移动IP地址.....

 public static String getMobileIPAddress() {
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface intf : interfaces) {
                List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
                for (InetAddress addr : addrs) {
                    if (!addr.isLoopbackAddress()) {
                        return  addr.getHostAddress();
                    }
                }
            }
        } catch (Exception ex) { } // for now eat exceptions
        return "";
    }
Run Code Online (Sandbox Code Playgroud)

对于Wifi IP地址....

  public String getWifiIPAddress() {
        WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
        int ip = wifiInfo.getIpAddress();
        return  Formatter.formatIpAddress(ip);
    }
Run Code Online (Sandbox Code Playgroud)

将此权限包含在您的清单中....

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Run Code Online (Sandbox Code Playgroud)

像这样使用....

String wifiIp = getWifiIPAddress(); 
String mobileIp = getMobileIPAddress();
Run Code Online (Sandbox Code Playgroud)

你得到像这样的输出......

Ø

Possibally是如何获取设备的IP地址的公告