Android 获取手机当前外网IP

在某些情况下,我们可能需要获取手机当前所连接的外网IP地址。这个信息对于一些网络应用程序可能是非常重要的。在Android平台上,我们可以通过一些方法来获取手机当前的外网IP地址。

方法一:使用第三方API

有一些第三方的API可以帮助我们获取手机当前所连接的外网IP地址。其中一个常用的API是[ipify]( API发送HTTP请求来获取IP地址。

// 发送HTTP请求获取IP地址
public String getPublicIP() {
    try {
        URL url = new URL("
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        
        // 读取请求结果
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String ip = reader.readLine();
        
        return ip;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

方法二:使用网络接口

另一个方法是通过检查手机当前所连接的网络接口来获取IP地址。我们可以通过NetworkInterface类来获取当前手机的网络接口信息,然后找到IPv4地址对应的外网IP地址。

// 获取外网IP地址
public String getPublicIP() {
    try {
        Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
        
        while (interfaces.hasMoreElements()) {
            NetworkInterface intf = interfaces.nextElement();
            Enumeration<InetAddress> addresses = intf.getInetAddresses();
            
            while (addresses.hasMoreElements()) {
                InetAddress address = addresses.nextElement();
                
                if (!address.isLoopbackAddress() && address instanceof Inet4Address) {
                    return address.getHostAddress();
                }
            }
        }
    } catch (SocketException e) {
        e.printStackTrace();
    }
    
    return null;
}

关系图

下面是获取外网IP地址的方法之间的关系图示例:

erDiagram
    METHOD_ONE --|> METHOD_TWO

甘特图

下面是获取外网IP地址的方法的时间甘特图示例:

gantt
    dateFormat  YYYY-MM-DD
    title 获取外网IP地址的方法时间甘特图

    section 方法一
    METHOD_ONE : 2022-01-01, 1d

    section 方法二
    METHOD_TWO : 2022-01-02, 1d

通过上述方法,我们可以轻松地在Android平台上获取手机当前的外网IP地址。这对于一些需要远程访问的应用程序是非常有用的,比如远程控制、远程监控等。希望本文对你有所帮助。