android获取ip地址工具,android获取本地的ip地址工具类

这是一个Android工具类,用于获取设备的本地IP地址,包括GPS、WiFi和3G/4G网络的IP。通过枚举网络接口并检查非回环地址,实现了在不同网络环境下获取IP的功能。代码中还包括了将整型IP转换为字符串的方法。
摘要由CSDN通过智能技术生成

android获取本地的ip地址工具类,帮你轻松获取本地ip;

先来看看权限问题

再来看看Java代码:

/**

* Created by czq on 2016/11/23.

* ip地址管理的工具类

*/

public class IpAdressUtils {

/**

* gps获取ip

* @return

*/

public static String getLocalIpAddress()

{

try

{

for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)

{

NetworkInterface intf = en.nextElement();

for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();)

{

InetAddress inetAddress = enumIpAddr.nextElement();

if (!inetAddress.isLoopbackAddress())

{

return inetAddress.getHostAddress().toString();

}

}

}

}

catch (Exception ex) {

ExceptoinHandler.handleException(ex);

}

return null;

}

/**

* wifi获取ip

* @param context

* @return

*/

public static String getIp(Context context){

try {

//获取wifi服务

WifiManager wifiManager = (WifiManager)context. getSystemService(Context.WIFI_SERVICE);

//判断wifi是否开启

if (!wifiManager.isWifiEnabled()) {

wifiManager.setWifiEnabled(true);

}

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

int ipAddress = wifiInfo.getIpAddress();

String ip = intToIp(ipAddress);

return ip;

} catch (Exception e) {

ExceptoinHandler.handleException(e);

}

return null;

}

/**

* 格式化ip地址(192.168.11.1)

* @param i

* @return

*/

private static String intToIp(int i) {

return (i & 0xFF ) + "." +

((i >> 8 ) & 0xFF) + "." +

((i >> 16 ) & 0xFF) + "." +

( i >> 24 & 0xFF) ;

}

/**

* 3G/4g网络IP

*/

public static String getIpAddress() {

try {

for (Enumeration en = NetworkInterface

.getNetworkInterfaces(); en.hasMoreElements();) {

NetworkInterface intf = en.nextElement();

for (Enumeration enumIpAddr = intf

.getInetAddresses(); enumIpAddr.hasMoreElements();) {

InetAddress inetAddress = enumIpAddr.nextElement();

if (!inetAddress.isLoopbackAddress()

&& inetAddress instanceof Inet4Address) {

// if (!inetAddress.isLoopbackAddress() && inetAddress

// instanceof Inet6Address) {

return inetAddress.getHostAddress().toString();

}

}

}

} catch (Exception e) {

ExceptoinHandler.handleException(e);

}

return null;

}

/**

* 获取本机的ip地址(3中方法都包括)

* @param context

* @return

*/

public static String getIpAdress(Context context){

String ip = null;

try {

ip=getIp(context);

if (ip==null){

ip = getIpAddress();

if (ip==null){

ip = getLocalIpAddress();

}

}

} catch (Exception e) {

ExceptoinHandler.handleException(e);

}

LogUtils.LogD("IpAdressUtils","ip=="+ip);

return ip;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值