我们可以通过WifiManager或InetAddress获取本地Ip地址。但是我们需要在android中以编程方式获得当前的公共IP地址。
发布于 2018-05-28 14:03:44
在manifeast文件中添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
创建移动数据和Wifi状态的方法。
public String GetDeviceipMobileData(){
try {
for (java.util.Enumeration<java.net.NetworkInterface> en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
java.net.NetworkInterface networkinterface = en.nextElement();
for (java.util.Enumeration<java.net.InetAddress> enumIpAddr = networkinterface.getInetAddresses(); enumIpAddr.hasMoreElements();) {
java.net.InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (Exception ex) {
Log.e("Current IP", ex.toString());
}
return null;
}
public String GetDeviceipWiFiData(){
android.net.wifi.WifiManager wm = (android.net.wifi.WifiManager) getSystemService(WIFI_SERVICE);
@SuppressWarnings("deprecation")
String ip = android.text.format.Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
return ip;
}
检查网络状态并调用此方法。
https://stackoverflow.com/questions/50559842
复制相似问题