報錯原因:安卓 9.0以後,Google為了保證使用者資料的安全,預設要求使用加密的方式請求資料,也就是要求(https),非加密的請求都會被系統過濾掉,連webview中加載的網頁Url,也得準守同樣的規則。
解決方案目前有以下幾種(親測都有效):
1.把所有請求都換成https,但是之前項目裡如果大量或全部用了http請求,那換起來成本較大,可以考慮其它方式;
2.如果項目不需要對Android P進行适配,可以把targetSdkVersion改為27以及以下;
-----------------------以下方式,版本号随意---------------------------
3.最簡單方式:直接在AndroidManifest.xml中application裡加上
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
4.更改網絡配置:
在res檔案夾下建立一個xml檔案夾,然後建立一個network_security_config.xml檔案:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">Your URL(ex: 127.0.0.1)</domain>
</domain-config>
</network-security-config>
然後在AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...>
...
</application>
</manifest>
由于我司項目中用的都是http請求,是以,我就采用了3,4兩種方式一起上了(反正也不麻煩,更保險點吧),其實任意一種即可。
更多資訊可以上Google官網:看看