一、问题描述
在Android中使用WebView加载非https链接时 例如测试http://192.168.1.100:7456,出现错误:
net::ERR_CLEARTEXT_NOT_PERMITTED
二、原因分析
从Android 9.0(API级别28)开始,默认情况下禁用明文支持。因此http的url均无法在webview中加载,Android9.0对未加密的流量不再信任,添加了新的限制。
三、解决办法
1.创建文件 res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">192.168.1.100</domain>
</domain-config>
</network-security-config>
其中将192.168.1.100替换为你自己的域名,根域名即可,includeSubdomains="true" 就包含了二级域名。
2.修改 AndroidManifest.xml
application节加入
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
3.检查网络访问权限,修改 AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
增加 <uses-permission android:name="android.permission.INTERNET" />