Android 获取IP地址的实现方法
Android获取IP地址
最近做项目,有一个需求是Android设备获取当前IP的功能,经过一番查询资料解决了,记录下实现方法。
1.使用WIFI
首先设置用户权限
<uses-permissionAndroid:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permissionandroid:name="android.permission.WAKE_LOCK"></uses-permission>
其次,代码如下
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取wifi服务
WifiManagerwifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);
//判断wifi是否开启
if(!wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(true);
}
WifiInfowifiInfo=wifiManager.getConnectionInfo();
intipAddress=wifiInfo.getIpAddress();
Stringip=intToIp(ipAddress);
EditTextet=(EditText)findViewById(R.id.EditText01);
et.setText(ip);
}
privateStringintToIp(inti){
return(i&0xFF)+"."+
((i>>8)&0xFF)+"."+
((i>>16)&0xFF)+"."+
(i>>24&0xFF);
}
2.使用GPRS
首先,设置用户上网权限
<uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>
其次,代码如下
publicStringgetLocalIpAddress()
{
try
{
for(Enumeration<NetworkInterface>en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();)
{
NetworkInterfaceintf=en.nextElement();
for(Enumeration<InetAddress>enumIpAddr=intf.getInetAddresses();enumIpAddr.hasMoreElements();)
{
InetAddressinetAddress=enumIpAddr.nextElement();
if(!inetAddress.isLoopbackAddress())
{
returninetAddress.getHostAddress().toString();
}
}
}
}
catch(SocketExceptionex)
{
Log.e("WifiPreferenceIpAddress",ex.toString());
}
returnnull;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!