如何捕获Android Application最终用户的IP地址

时间:2013-05-07 12:22:16

标签: android eclipse ip-address

- > Android应用程序最终用户的IP地址

我在互联网上搜索了如何捕获实际使用我的ANDROID APPLICATION的用户的 IP ADDRESS ,但没有得到适合我的正确代码。

我正在Eclipse上开发这个Android应用程序。

在大多数论坛上,我得到的链接根本无法访问: http://www.droidnova.com/get-the-ip-address-of-your-device,304.html

需要你的支持人员。

由于

3 个答案:

答案 0 :(得分:3)

您可以尝试以下代码。

  public String getLocalIpAddress() {
    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()) {
             String ip = Formatter.formatIpAddress(inetAddress.hashCode());
             return ip;
           }
         }
      }
    } catch (SocketException ex) {
      // 
    }
    return null;
  }

不要忘记添加以下权限以允许您的应用程序打开网络套接字:

 <uses-permission android:name="android.permission.INTERNET" /> 

答案 1 :(得分:1)

  1. 尝试打开与http://www.whatismyip.com的连接并获取结果。
  2. 对您的应用主机进行HTTP POST(或GET),并检查请求来自哪个IP。
  3. 使用SDK。
  4. 编辑:基于评论:这是获取客户端IP的服务器端角色,而不是Android作业。 下面是一个示例,您如何使用PHP执行此操作:$_SERVER['REMOTE_ADDR']

答案 2 :(得分:0)

或者,您可以告诉手机发送IP,而不是从服务器请求IP。

您可以使用以下代码获取IP地址。

public String getLocalIpAddress() {
        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(tag, ex.toString());
        }
        return "";
    }