安卓中获取ip地址

  • 获取当前手机的ip地址

    public static String getIPAddress(Context context) {
    NetworkInfo info = ((ConnectivityManager) context
    .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
    if (info != null && info.isConnected()) {
    if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//当前使用2G/3G/4G网络
    try {
    //Enumeration en=NetworkInterface.getNetworkInterfaces();
    for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
    NetworkInterface intf = en.nextElement();
    for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
    InetAddress inetAddress = enumIpAddr.nextElement();
    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
    return inetAddress.getHostAddress();
    }
    }
    }
    } catch (SocketException e) {
    e.printStackTrace();
    }

    } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前使用无线网络
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址
    return ipAddress;
    }
    } else {
    //当前无网络连接,请在设置中打开网络
    }
    return null;
    }

    /**
    * 将得到的int类型的IP转换为String类型
    *
    * @param ip
    * @return
    */

    public static String intIP2StringIP(int ip) {
    return (ip & 0xFF) + "." +
    ((ip >> 8) & 0xFF) + "." +
    ((ip >> 16) & 0xFF) + "." +
    (ip >> 24 & 0xFF);
    }

  • 获取设备的ip地址

    • 原理是遍历所有网络接口的所有IP地址。如果方法返回null,则设备没有可用的网络连接。方法返回的IP地址是设备正在使用的IP地址。

      public String getLocalIpAddress() {
      try {
      for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements()😉 {
      NetworkInterface intf = en.nextElement();
      for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements()😉 {
      InetAddress inetAddress = enumIpAddr.nextElement();
      if (!inetAddress.isLoopbackAddress()) {
      return inetAddress.getHostAddress().toString();
      }
      }
      }
      } catch (SocketException ex) {
      Log.e(LOG_TAG, ex.toString());
      }
      return null;
      }

posted @ 2017-05-08 16:30  HelloWorld0505  阅读(307)  评论(0)    收藏  举报