2

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

我已经在互联网上搜索了有关如何捕获实际使用我的 ANDROID 应用程序的用户的IP 地址的分配,但没有得到适合我的正确代码。

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

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

需要你们的支持。

谢谢

4

3 回答 3

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" /> 
于 2013-05-07T12:30:40.987 回答
1
  1. 尝试打开与http://www.whatismyip.com的连接并获取结果。
  2. 向您的应用程序主机发出 HTTP POST(或 GET)并检查来自哪个 IP 的请求。
  3. 使用 SDK。

编辑:基于评论:这是获取客户端 IP 的服务器端角色,而不是 Android 工作。这是一个示例,您如何使用 PHP 进行操作:$_SERVER['REMOTE_ADDR']

于 2013-05-07T12:29:36.787 回答
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 "";
    }
于 2013-05-07T12:31:12.547 回答