Android应用出现UnknownHostException,iOS及安卓Chrome可正常访问同一URL
排查Android应用UnknownHostException问题(同设备Chrome/iOS可正常访问)
常见原因与解决步骤
检查网络权限配置
确认AndroidManifest.xml中是否添加了必要的网络权限:<uses-permission android:name="android.permission.INTERNET" />针对Android 9及以上版本,若目标URL为HTTP协议,需在
<application>标签内添加android:usesCleartextTraffic="true",或通过网络安全配置文件放行明文流量。验证DNS解析异常
应用可能存在DNS解析失败的情况,可在代码中手动测试域名解析:try { InetAddress address = InetAddress.getByName("目标域名"); Log.d("DNS_CHECK", "解析结果: " + address.getHostAddress()); } catch (UnknownHostException e) { e.printStackTrace(); }对比Chrome的解析结果,若不一致,排查是否有VPN/代理干扰,或尝试强制应用使用系统默认DNS。
检查应用代理设置
部分应用可能被配置了异常代理,而Chrome使用系统代理或无代理。可通过代码检查当前代理状态:Proxy proxy = Proxy.getDefault(); Log.d("PROXY_CHECK", "当前代理: " + proxy.toString());若存在异常代理,可通过代码强制关闭,或引导用户检查系统代理设置。
排查网络安全策略限制
Android 7.0及以上的网络安全配置文件(res/xml/network_security_config.xml)可能限制了目标域名访问。检查配置中是否允许该域名,或是否存在HTTPS证书信任问题。测试不同网络环境
切换Wi-Fi和移动数据网络,确认是否仅在特定网络下出现问题。部分路由器可能存在DNS劫持或域名过滤,浏览器可能通过DNS-over-HTTPS绕过限制,但应用未开启该功能。检查第三方网络库配置
若使用OkHttp、Retrofit等网络库,确认是否有自定义DNS或拦截器干扰解析。例如OkHttp可暂时切换为系统默认DNS测试:OkHttpClient client = new OkHttpClient.Builder() .dns(Dns.SYSTEM) .build();
内容的提问来源于stack exchange,提问作者Sǻqĭb Sûfĭǻn
相关产品推荐
相关产品推荐

