当出现类似“java.net.UnknownServiceException: CLEARTEXT communication to XXX not permitted by network security policy”的异常时,这表明您的 Android 应用尝试使用明文(非加密)协议(通常是 HTTP)访问这个域名,但被系统的网络安全策略所阻止。自 Android P 版本开始,出于安全考虑,Android 系统默认禁止了对明文 HTTP 站点的访问。
解决方法如下:
1.首选解决方案
将您的 API 请求升级为 HTTPS 协议。
2.调整应用的网络安全配置
AndroidManifest.xml修改
<application
...
android:usesCleartextTraffic="true">
...
</application>
3.为特定域名添加网络安全豁免
在 res/xml 目录下创建一个名为 network_security_config.xml 的文件
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">你的域名</domain>
</domain-config>
</network-security-config>
在 AndroidManifest.xml 中引用这个配置
<application
...
android:networkSecurityConfig="@xml/network_security_config">
...
</application>