有没有办法可以同时获取Android中的WiFi和蜂窝网络的IP地址。我尝试使用很多示例但是只能获得WiFi网络的地址而不是蜂窝网络。我启用了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时,是否可以获取蜂窝网络的IP地址。如果可行则是如此。
答案 0 :(得分:11)
每当您在设备上启用WiFi并且与WiFi网络建立有效连接时,无论您是否手动启用了移动数据,暂时禁用。设置&#34;移动数据开/关&#34;只有在没有有效的WiFi连接时才会考虑。
某些自定义ROM可以选择在连接到WiFi时保持移动连接处于活动状态(因此,如果您丢失了WiFi连接,它会更快地切换到移动设备),但仍然使用WiFi连接。
结论:由于无法同时启用WiFi和移动网络,因此无法获取这两个IP地址(如果可以,您只能主动使用WiFi)
答案 1 :(得分: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 "";
}
对于Wifi IP地址....
public String getWifiIPAddress() {
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
return Formatter.formatIpAddress(ip);
}
将此权限包含在您的清单中....
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
像这样使用....
String wifiIp = getWifiIPAddress();
String mobileIp = getMobileIPAddress();
你得到这样的输出......
的共同体答案 2 :(得分:3)
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
答案 3 :(得分:3)
在java代码中使用以下内容:
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipAddress = Formatter.formatIpAddress(ip);
不要忘记在Android Manifest文件中添加此权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
希望它有所帮助!祝你好运!
答案 4 :(得分:1)
启用并连接wifi后,您无法通过蜂窝连接获取IP。这是因为系统不会出于节省电池的原因而使用蜂窝数据连接。尽管您可以同时启用它们,但系统一次只能使用一个。它是这样的:两者都被允许,但只使用了一个。
我只能想到一个例子:当你通过wifi连接到没有互联网接入的网络时,你的手机也将通过手机连接。