Android CLEARTEXT communication to xxxxxxx not permitted by network security policy

問題:

java.net.UnknownServiceException: CLEARTEXT communication to xxx.xxx.com(域名) not permitted by network security polic

由於 Android P(版本27以上) 限制了明文流量的網絡請求,非加密的流量請求都會被系統禁止掉。

如果應用使用的是非加密的明文流量的http網絡請求,則會導致該應用無法進行網絡請求,https則不會受影響,同樣地,如果應用嵌套了webview,webview也只能使用https請求。

方法一、
APP改用https請求(這個需要後臺協助,花錢買Https證書,簡單解決)

方法二、
targetSdkVersion 降到27或以下

方法三、
在清單文件 AndroidManifest.xml 的 application 節點下 添加原來默認爲 true,但在 Android 9.0 中默認值改爲了 false,因此將配置手動設爲 true 即可解決明文傳輸被限制的問題

方法四、
在 res 下新建一個 xml 目錄,然後創建一個名爲:network_security_config.xml 文件(名稱自定) ,該文件內容如下:

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

然後在 Android 的 AndroidManifest.xml 文件下的 application 標籤增加以下屬性

<application
    android:networkSecurityConfig="@xml/network_security_config">
</application>

參考
https://stackoverflow.com/questions/60175852/cleartext-communication-not-permitted-by-network-security-policy-working-on-my-m
https://juejin.cn/post/6844903991009083399
https://my.oschina.net/u/2417992/blog/3053591
https://juejin.cn/post/6844903829549350926



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章