android开发 获取WIFI和有线的IP地址

来源:互联网 发布:星际争霸2辅助软件 编辑:程序博客网 时间:2024/04/29 07:08

转载:http://blog.csdn.net/value_liu/article/details/11815865


首先设置权限:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>  
  2. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>  
  3. <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>  

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /** 
  2. * if (intf.getName().toLowerCase().equals("eth0") || intf.getName().toLowerCase().equals("wlan0")) 
  3. * 表示:仅过滤无线和有线的ip. networkInterface是有很多的名称的 
  4. * 比如sim0,remt1.....等等.我不需要用到就直接过滤了 
  5.  
  6. * if (!ipaddress.contains("::"))  
  7. * 表示: 过滤掉ipv6的地址.不管无线还是有线 都有这个地址, 
  8. * 我这边显示地址大体是:fe80::288:88ff:fe00:1%eth0 fe80::ee17:2fff:fece:c0b4%wlan0 
  9. * 一般都是出现在第一次循环.第二次循环就是真正的ipv4的地址. 
  10.  
  11. * @return 
  12. * @throws SocketException 
  13. */  
  14. public String GetIpAddress() throws SocketException {  
  15. String ipaddress = "";  
  16. Enumeration<NetworkInterface> netInterfaces = null;  
  17. try {  
  18. netInterfaces = NetworkInterface.getNetworkInterfaces();  
  19. while (netInterfaces.hasMoreElements()) {  
  20. NetworkInterface intf = netInterfaces.nextElement();  
  21. if (intf.getName().toLowerCase().equals("eth0") | | intf.getName().toLowerCase().equals("wlan0")) {  
  22. for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {  
  23. InetAddress inetAddress = enumIpAddr.nextElement();  
  24. if (!inetAddress.isLoopbackAddress()) {  
  25. ipaddress = inetAddress.getHostAddress().toString();  
  26. if (!ipaddress.contains("::")) {// ipV6的地址  
  27. ipaddress = ipaddress;  
  28. }  
  29. }  
  30. }  
  31. else {  
  32. continue;  
  33. }  
  34. }  
  35. catch (Exception e) {  
  36. e.printStackTrace();  
  37. }  
  38. // final ContentResolver mContentResolver = getContentResolver();  
  39. // Settings.System.putInt( mContentResolver,  
  40. // Settings.System.WIFI_USE_STATIC_IP, 1);  
  41. // Settings.System.putString( mContentResolver,  
  42. // Settings.System.WIFI_STATIC_IP, "你的ip地址");  
  43.   
  44. return ipaddress;  
  45. }  
  46.   
  47.   
  48. public String getAddress() {  
  49. WifiManager wifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE);  
  50. // 判断wifi是否开启  
  51. if (!wifiManager.isWifiEnabled()) {  
  52. wifiManager.setWifiEnabled(true);  
  53. }  
  54. WifiInfo wifiInfo = wifiManager.getConnectionInfo();  
  55. DhcpInfo info = wifiManager.getDhcpInfo();  
  56. int ipAddress = wifiInfo.getIpAddress();  
  57. int ii = info.ipAddress;  
  58. // return intToIp(ipAddress);  
  59. return ipAddress + "    dhcp: " + ii;  
  60.   
  61. }  
  62.   
  63.   
  64. private String intToIp(int i) {  
  65. return (i & 0xFF) + "." +  
  66. ((i >> 8) & 0xFF) + "." +  
  67. ((i >> 16) & 0xFF) + "." +  
  68. (i >> 24 & 0xFF);  
  69. }  
  70. }  
0 0
原创粉丝点击