Android 高版本联网失败:not permitted by network security policy

under Android  tag     Published on April 30th , 2021 at 09:54 am

从 Android 9(API 级别 28)开始,系统默认情况下已停用明文支持。Android 高版本上进行 http 网络请求,会导致项目无法进行网络请求,如果是 https 则不会受影响

使用 OKHttp 时出现的异常:

CLEARTEXT communication to * not permitted by network security policy

解决

  • 配置自定义 CA (证书授权机构)
    在 res 文件夹下创建 xml 文件夹,在 xml 文件夹下再创建 network_security_config.xml 文件。

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

base-config:应用范围的自定义
cleartextTrafficPermitted:以防止来自恶意网络的敏感流量。默认 false。

  • 添加网络安全配置文件,在 AndroidManifest.xml 文件下的 application 标签中添加一个指向该文件的条目。
 <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
        <application android:networkSecurityConfig="@xml/network_security_config"
                        ... >
            ...
        </application>
    </manifest>

参考文章:
网络安全配置
Android高版本联网失败报错


本文由 surface 创作,采用 知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
  文章最后更新时间为:September 29th , 2021 at 04:39 pm
分享到:Twitter  Weibo  Facebook