2013-05-07 18 views
2

-如何捕获Android应用程序的最终用户的IP地址

我已搜查了配发网络有关如何捕获用户的IP 地址 Android应用程序的最终用户的> IP地址谁是真正的使用我的ANDROID APPLICATION,但没有得到适合我的正确代码。

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

上大部分的论坛上,我得到这个链接是不可达的所有: http://www.droidnova.com/get-the-ip-address-of-your-device,304.html

需要您的支持家伙。

感谢

+1

这是你想要的吗?http://stackoverflow.com/questions/6064510/how-to-get-ip-address-of-the-device Utils.getIPAddress(true); // IPv4 Utils.getIPAddress(false); // IPv6 – cremy 2013-05-07 12:28:56

回答

1
  1. 尝试打开http://www.whatismyip.com的连接,并获取结果。
  2. 向您的应用主机发送HTTP POST(或GET),并检查请求来自哪个IP。
  3. 使用SDK。

编辑:基于评论:这是服务器端角色来获取客户端IP,而不是Android作业。 下面是一个示例,你如何使用PHP:$_SERVER['REMOTE_ADDR']

+0

我试过了,但我需要捕获(存储)将使用我的Android应用程序的用户的IP地址。 – ChitranjanThakur 2013-05-07 12:34:17

+1

哪一个你尝试过,你需要在哪里存储它:Android或服务器端? – 2013-05-07 13:05:15

+0

感谢您的回复,我需要将它存储在我的服务器上,只需保存使用我的应用的用户的IP地址的日志。 – ChitranjanThakur 2013-05-07 16:12:36

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" /> 
+0

@Ankur - 我得到这个错误“从Formatter类型的方法formatIpAddress(int)已弃用”在这一行“获取String ip = Formatter.formatIpAddress(inetAddress.hashCode());” – ChitranjanThakur 2013-05-07 12:41:15

+0

将格式化程序行CT讨论的内容切换为:String ip = inetAddress.getHostAddress();避免弃用警告 – ColossalChris 2015-03-13 22:49:28

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 ""; 
    } 
相关问题