public class NetManager {
/**
* 獲取用戶IP地址<br/>
* 注意:需要在androidManifest.xml中聲明下面三個權(quán)限才能正常使用該方法,否則會空指針異常
* <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
* <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
* <uses-permission android:name="android.permission.INTERNET"/>
*/
public static String getIpAddress(Context context) {
if (context == null) {
return "";
}
ConnectivityManager conMann = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobileNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mobileNetworkInfo.isConnected()) {
return getLocalIpAddress();
} else if (wifiNetworkInfo.isConnected()) {
return getWifiAddress(context);
}
return "";
}
private static String getLocalIpAddress() {
try {
ArrayList<NetworkInterface> nilist = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface ni : nilist) {
ArrayList<InetAddress> ialist = Collections.list(ni.getInetAddresses());
for (InetAddress address : ialist) {
if (!address.isLoopbackAddress() && address instanceof Inet4Address) {
return address.getHostAddress();
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}
return "";
}
private static String getWifiAddress(Context context) {
if (context == null) {
return "";
}
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
return intToIp(ipAddress);
}
private static String intToIp(int ipInt) {
String s = (ipInt & 0xFF) + "." +
((ipInt >> 8) & 0xFF) + "." +
((ipInt >> 16) & 0xFF) + "." +
((ipInt >> 24) & 0xFF);
return s;
}
}
經(jīng)過實測,并不能真的獲取到網(wǎng)絡(luò)上實際的外網(wǎng)IP地址,只能拿到他下面的內(nèi)網(wǎng)IP地址,湊合著用吧文章來源:http://www.zghlxwxcb.cn/news/detail-566273.html
參考來源:https://blog.csdn.net/sinat_16458039/article/details/50260589文章來源地址http://www.zghlxwxcb.cn/news/detail-566273.html
到了這里,關(guān)于Android獲取用戶ip地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!