You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android应用中获取外部IP地址?

Android 获取外部公网IP的可行方案
  • 本质逻辑:设备自身无法直接知晓公网IP,必须通过外部服务器的反射才能获取,所以所有方案都离不开与外部服务的网络交互。你想到的调用whoami类网站是可行方向,但可以优化成更简单的纯文本接口请求,避免解析HTML页面的麻烦。

  • 轻量实现方案(直接获取纯文本IP):
    选择返回纯文本格式IP的公开API接口,发起简单的GET请求后直接读取响应体即可,无需复杂解析。以OkHttp库为例,代码示例如下:

    OkHttpClient client = new OkHttpClient();
    
    Request request = new Request.Builder()
        .url("https://返回纯文本IP的公开API地址")
        .build();
    
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            // 处理请求失败逻辑,比如重试或提示用户
            e.printStackTrace();
        }
    
        @Override
        public void onResponse(Call call, Response response) throws IOException {
            if (response.isSuccessful()) {
                String publicIp = response.body().string();
                // 成功获取公网IP,进行后续业务处理
            }
        }
    });
    

    注意事项:

    • 需在AndroidManifest.xml中添加网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
    • 建议选择稳定、无额外内容返回的接口,避免解析成本。
  • 可靠性优化:可以同时准备2-3个备用的纯文本IP接口,当主接口请求失败时自动切换到备用接口,提升获取成功率。

  • 关于InetAddress.getHostAddress()的说明:
    这个方法只能获取设备在本地局域网内的私有IP,因为公网IP是运营商分配给路由器的NAT网关地址,设备本身无法直接读取,必须通过外部服务器的响应才能拿到。

内容的提问来源于stack exchange,提问作者theblitz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:15:32