2016-11-23 8 views
3

のプログラムでIPv4アドレスとIPv6アドレスをプログラムで取得する方法について説明しました。これらの他の質問と回答の問題点は次のとおりです。WifiのときとCarierのネットワークのときの両方で、推奨されていないメソッドを使用したAndroidデバイスのIPv4とIPv6の取得

  • これらの質問/回答は、今ので、しばしば非推奨によってかなり古いです。私はそれを非推奨型であるで完了させる方法を探しています(例えば、InetAddressUtilsは廃止され、その他も廃止予定です)。
  • のアドレスをのWifiまたはキャリアのネットワークで取得する方法を知りたいと思います。

(それが可能であれば)、それは長い方法なし短いきちんと方法で行わ取得する方法を私に言うことができる誰かがありますか? IPv4の

+0

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

+0

は私が前にそれをチェックした、ありがとうございますが、そのページ当時は大きな助けにはならなかった – lehrer

答えて

1

、あなたが使用できるIPv6の

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; 
    } 
関連する問題