Android9.0 WebView遇到net::ERR_CLEARTEXT_NOT_PERMITTED的錯誤

WebView請求需要網絡權限,所以先在AndroidManifest.xml文件中申請網絡權限:

<uses-permission android:name="android.permission.INTERNET"/>

當WebView在進行網絡請求時,突然報了net::ERR_CLEARTEXT_NOT_PERMITTED錯誤。經過了解,發現API 28(含28)之後所有網絡請求都要用https,但是我們有很多接口都還在用着http請求,一下子轉換到https不是一時半會就能完成的。

因此爲了解決這個問題,提供了以下四種解決辦法:

方法一

通過API降級來解決,把targetSdkVersion降級回到27。

方法二

在AndroidManifest.xml文件的application標籤里加入屬性android:usesCleartextTraffic="true"來解決,如:

<manifest ...>
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>

方法三

在AndroidManifest.xml文件的application標籤里加入android:networkSecurityConfig="@xml/network_security_config",這種方法與方法二是相似的。

(1)定義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>

(2)在 AndroidManifest.xml 的 application 標籤配置屬性:

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

方法四

服務器和本地應用都使用 https進行網絡請求。

謝謝閱讀

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