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; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!