如何在 Android 中设备连接到 WiFi 时获取蜂窝网络的 IP 地址
How to get IP address of cellular network when device is connected to WiFi in Android
有没有办法让我在 Android 中获取 WiFi 和蜂窝网络的 IP 地址 simultaneously.I 尝试使用许多示例,但只能获取 WiFi 网络的地址,而不是蜂窝网络的地址network.I 已启用 WiFi 和蜂窝网络,并且设备正在通过 WiFi 访问互联网。
这是我用来获取 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) {
}
当设备连接到 WiFi.If 时是否可以获取蜂窝网络的 IP 地址 WiFi.If 是的,这如何可行。
只要您在设备上启用 WiFi 并与 WiFi 网络建立有效连接,您的移动数据就会暂时禁用,无论您是否手动启用它。仅当您没有活动的 WiFi 连接时才会考虑设置 "Mobile data on/off"。
一些自定义 ROM 有一个选项,可以在您连接到 WiFi 时保持移动连接有效(因此,如果您失去 WiFi 连接,它会更快地切换到移动设备),但仍然使用 WiFi 连接。
结论:你不能同时获得两个IP地址,因为你不能同时打开WiFi和移动网络(如果可以,你只主动使用WiFi)
试试这个可能会有帮助.....
For Mobile IP Address.....
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 "";
}
For Wifi IP Address....
public String getWifiIPAddress() {
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
return Formatter.formatIpAddress(ip);
}
include this permission into your menifest ....
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
use like this ....
String wifiIp = getWifiIPAddress();
String mobileIp = getMobileIPAddress();
你得到这样的输出......
可能是 How to get IP address of the device
的重复
当您的 wifi 已启用并已连接时,您将不会获得用于蜂窝网络连接的 IP。那是因为出于节省电池的原因,系统不使用蜂窝数据连接。虽然您可以同时启用它们,但系统一次只会使用一个。就好比:两个都可以,但只用一个
我只能想到一个例子:当你通过 wifi 连接到没有互联网接入的网络时,你的 phone 也将通过蜂窝网络连接。
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
在您的 java 代码中使用以下内容:
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipAddress = Formatter.formatIpAddress(ip);
不要忘记在您的 Android 清单文件中添加此权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
来源:Get Wifi IP Address
希望对您有所帮助!祝你好运!
有没有办法让我在 Android 中获取 WiFi 和蜂窝网络的 IP 地址 simultaneously.I 尝试使用许多示例,但只能获取 WiFi 网络的地址,而不是蜂窝网络的地址network.I 已启用 WiFi 和蜂窝网络,并且设备正在通过 WiFi 访问互联网。
这是我用来获取 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) {
}
当设备连接到 WiFi.If 时是否可以获取蜂窝网络的 IP 地址 WiFi.If 是的,这如何可行。
只要您在设备上启用 WiFi 并与 WiFi 网络建立有效连接,您的移动数据就会暂时禁用,无论您是否手动启用它。仅当您没有活动的 WiFi 连接时才会考虑设置 "Mobile data on/off"。
一些自定义 ROM 有一个选项,可以在您连接到 WiFi 时保持移动连接有效(因此,如果您失去 WiFi 连接,它会更快地切换到移动设备),但仍然使用 WiFi 连接。
结论:你不能同时获得两个IP地址,因为你不能同时打开WiFi和移动网络(如果可以,你只主动使用WiFi)
试试这个可能会有帮助.....
For Mobile IP Address.....
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 "";
}
For Wifi IP Address....
public String getWifiIPAddress() {
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
return Formatter.formatIpAddress(ip);
}
include this permission into your menifest ....
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
use like this ....
String wifiIp = getWifiIPAddress();
String mobileIp = getMobileIPAddress();
你得到这样的输出......
可能是 How to get IP address of the device
的重复当您的 wifi 已启用并已连接时,您将不会获得用于蜂窝网络连接的 IP。那是因为出于节省电池的原因,系统不使用蜂窝数据连接。虽然您可以同时启用它们,但系统一次只会使用一个。就好比:两个都可以,但只用一个
我只能想到一个例子:当你通过 wifi 连接到没有互联网接入的网络时,你的 phone 也将通过蜂窝网络连接。
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
在您的 java 代码中使用以下内容:
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipAddress = Formatter.formatIpAddress(ip);
不要忘记在您的 Android 清单文件中添加此权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
来源:Get Wifi IP Address
希望对您有所帮助!祝你好运!