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進行網絡請求。
謝謝閱讀