最近做项目的时候需要获取android设备地址,在网上找到了如下的方式
方式一:
import ;
import ;
import ;
import ;
//不适用android较新版本(例如4.0等)
public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = (); ();) {
NetworkInterface intf = ();
for (Enumeration<InetAddress> enumIpAddr = (); ();) {
InetAddress inetAddress = ();
if (!()) {
return ().toString();
}
}
}
} catch (SocketException ex) {
(());
}
return null;
}
但是经过测试该方法在android2.3, 2.2...较老版本有效,但是在android较新版本(例如4.0等)获取的数据不正确。
方式二: 通过WifiManager, DhcpInfo获取IP地址以及网关等信息(在android4.0等版本也适用)
package ;
import ;
import ;
import ;
import ;
import ;
public class IPAddress {
public String getIPAddress(Context ctx){
WifiManager wifi_service = (WifiManager) (Context.WIFI_SERVICE);
DhcpInfo dhcpInfo = wifi_service.getDhcpInfo();
WifiInfo wifiinfo = wifi_service.getConnectionInfo();
("Wifi info----->"+());
("DHCP info gateway----->"+());
("DHCP info netmask----->"+());
//DhcpInfo中的ipAddress是一个int型的变量,通过Formatter将其转化为字符串IP地址
return ();
}
}
加入permission
<uses-permission android:name=".ACCESS_WIFI_STATE"/>