2016-11-23 3 views
3

Ich stieß auf eine Diskussion über IPv4 und IPv6-Adressen programmgesteuert auf Android. Das Problem mit diesen Fragen und Antworten ist:IPv4 und IPv6 programmatisch von Android-Gerät mit nicht veralteten Methoden, sowohl bei Wifi und wenn auf Carier-Netzwerk

  • Die Frage/Antworten sind ziemlich alt mittlerweile so oft veraltet. Ich bin auf der Suche nach einem Weg, um es in einer nicht veralteten Weg (zum Beispiel, InetAddressUtils ist veraltet und so sind andere).
  • Ich möchte wissen, wie sowohl eine IPv4 und IPv6 Adresse zu bekommen, wenn auf Wifi oder Netzwerk des Carriers.

Gibt es jemanden, der mir sagen könnte, wie es in einem kurzen und ordentlich Weg ohne langwierige Verfahren zu erledigen (wenn das möglich ist)?

+0

https://developer.android.com/reference/android/net/ConnectivityManager.html –

+0

Danke verwenden, habe ich es vorher geprüft, aber diese Seite war damals keine große Hilfe – lehrer

Antwort

1

Für IPv4-, IPv6- können Sie

public String getIpv4() { 
      try { 
       for (Enumeration<NetworkInterface> en = NetworkInterface 
         .getNetworkInterfaces(); en.hasMoreElements();) { 
        NetworkInterface intf = en.nextElement(); 
        for (Enumeration<InetAddress> enumIpAddr = intf 
          .getInetAddresses(); enumIpAddr.hasMoreElements();) { 
         InetAddress inetAddress = enumIpAddr.nextElement(); 
         System.out.println("ip1--:" + inetAddress); 
         System.out.println("ip2--:" + inetAddress.getHostAddress()); 

         if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { 
          String ipaddress = inetAddress.getHostAddress().toString(); 
          return ipaddress; 
         } 


        } 
       } 
      } catch (Exception ex) { 
       Log.e("IP Address", ex.toString()); 
      } 
      return null; 
     } 

//ipv6 
    public String getLocalIpV6() { 
     try { 
      for (Enumeration<NetworkInterface> en = NetworkInterface 
        .getNetworkInterfaces(); en.hasMoreElements();) { 
       NetworkInterface intf = en.nextElement(); 
       for (Enumeration<InetAddress> enumIpAddr = intf 
         .getInetAddresses(); enumIpAddr.hasMoreElements();) { 
        InetAddress inetAddress = enumIpAddr.nextElement(); 
        System.out.println("ip1--:" + inetAddress); 
        System.out.println("ip2--:" + inetAddress.getHostAddress()); 

        if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet6Address) { 
         String ipaddress = inetAddress.getHostAddress().toString(); 
         return ipaddress; 
        } 


       } 
      } 
     } catch (Exception ex) { 
      Log.e("IP Address", ex.toString()); 
     } 
     return null; 
    } 
Verwandte Themen