2

モバイルでインターネット IP アドレスを取得しようとしています。デバイスの IP アドレスは必要ありません。そのデバイスは、wifi、3g、2g、またはとにかく接続されています。モバイルにインターネット機能があるということは、そのインターネット IP アドレスが必要であることを意味します。

注:すでにいくつかのコーディングを試しました。そのコードは、デバイスの IP アドレスのみを取得するために機能します。

私の前のコード:

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();
                if (!inetAddress.isLoopbackAddress())
                { return inetAddress.getHostAddress().toString(); }      
                }
              }

        }
  catch (SocketException ex) 
 { 
   Log.e("ServerActivity", ex.toString());
  }

Another one code :

 WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
    WifiInfo wifiInfo = wifiManager.getConnectionInfo();
    int ipAddress = wifiInfo.getIpAddress();
    Log.v("hari", "ipAddress:"+ipAddress);

ありがとう 事前に誰か助けてください..

4

1 に答える 1

4

この Web サイトとその API を使用して取得できます: http://www.externalip.net/

具体的には http://api.externalip.net/ip

または(コメントで誰かが述べたように)サーバーにPHPファイルを作成することもできます:

<?php
echo $_SERVER['REMOTE_ADDR'];
?>

externalip.net url を使用した Android コード (この回答から適応)

HttpGet httppost = new HttpGet("http://api.externalip.net/ip");
HttpResponse response = httpclient.execute(httppost);
HttpEntity ht = response.getEntity();
BufferedHttpEntity buf = new BufferedHttpEntity(ht);
InputStream is = buf.getContent();
BufferedReader r = new BufferedReader(new InputStreamReader(is));
StringBuilder total = new StringBuilder();
String ipaddress = r.readLine();
于 2013-09-20T13:39:59.013 に答える