2

我正在尝试在我的手机中获取 Internet 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

你可以使用这个网站和他们的 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 回答