LocalIPUtil.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.easygbs.device.util;
  2. import android.content.Context;
  3. import android.net.ConnectivityManager;
  4. import android.net.NetworkInfo;
  5. import android.net.wifi.WifiInfo;
  6. import android.net.wifi.WifiManager;
  7. import android.util.Log;
  8. import java.net.InetAddress;
  9. import java.net.NetworkInterface;
  10. import java.net.SocketException;
  11. import java.util.ArrayList;
  12. import java.util.Collections;
  13. public class LocalIPUtil {
  14. public static String getLocalIp(Context context) {
  15. ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  16. NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
  17. if (activeNetworkInfo == null) {
  18. return null;
  19. }
  20. String ip;
  21. if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
  22. // wifi
  23. ip = getWifiIp(context);
  24. } else {
  25. // 不是wifi
  26. ip = get4gIp();
  27. }
  28. Log.i("LocalIPUtil", ip);
  29. return ip;
  30. }
  31. /*
  32. * 移动网络下获得本地IP地址
  33. * */
  34. private static String get4gIp() {
  35. try {
  36. String ipv4;
  37. ArrayList<NetworkInterface> nilist = Collections.list(NetworkInterface.getNetworkInterfaces());
  38. for (NetworkInterface ni: nilist) {
  39. ArrayList<InetAddress> ialist = Collections.list(ni.getInetAddresses());
  40. for (InetAddress address: ialist) {
  41. if (!address.isLoopbackAddress() && !address.isLinkLocalAddress()) {
  42. ipv4=address.getHostAddress();
  43. return ipv4;
  44. }
  45. }
  46. }
  47. } catch (SocketException ex) {
  48. Log.e("localip", ex.toString());
  49. }
  50. return null;
  51. }
  52. /*
  53. * wifi下获得本地IP地址
  54. * */
  55. private static String getWifiIp(Context context) {
  56. //获取wifi服务
  57. WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
  58. //判断wifi是否开启
  59. if (!wifiManager.isWifiEnabled()) {
  60. wifiManager.setWifiEnabled(true);
  61. }
  62. WifiInfo wifiInfo = wifiManager.getConnectionInfo();
  63. int ipAddress = wifiInfo.getIpAddress();
  64. String ip = intToIp(ipAddress);
  65. return ip;
  66. }
  67. /* 获取Wifi ip 地址 */
  68. private static String intToIp(int i) {
  69. return (i & 0xFF) + "." +
  70. ((i >> 8) & 0xFF) + "." +
  71. ((i >> 16) & 0xFF) + "." +
  72. (i >> 24 & 0xFF);
  73. }
  74. }