前言
[异常原因]:从Android 9.0 (API级别28) 开始,默认情况下限制了明文流量的网络请求,对未加密流量不再信任,直接放弃请求因此http的url均无法在webview中加载,https 不受影响。
在Android Studio中使用webview加载URL出现net::ERR_CLEARTEXT_NOT_PERMITTED
cleartext为明文 permitted表示允许即加载http时明文不被允许
从Android 9.0(API级别28)开始,默认情况下禁用明文支持。因此http的url均无法在webview中加载
先保证App申明了网络权限
<uses-permission android:name="android.permission.INTERNET"/>
【解决方法(1)】
在此需要添加允许权限
<application
android:name="dji.sampleV5.all.DJIAllApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_main"
android:label="@string/app_name_all"
android:supportsRtl="true"
android:usesCleartextTraffic="true" //加上这句就可以
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
我这里加上这句之后会已下错误
Manifest merger failed : Attribute application@usesCleartextTraffic value=(true) from AndroidManifest.xml:34:9-44
is also present at [com.dji:dji-sdk-v5-all:5.2.0] AndroidManifest.xml:27:9-45 value=(false).
Suggestion: add 'tools:replace="android:usesCleartextTraffic"' to <application> element at AndroidManifest.xml:28:5-119:19 to override.
解决报错问题方法
res 下新建 xml目录,创建文件: network_config.xml ,内容如下:
在AndroidManifest.xml文件的application标签里加入android:networkSecurityConfig="@xml/network_security_config",这种方法与方法二是相似的。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:tools="http://schemas.android.com/tools">
<base-config cleartextTrafficPermitted="true"
tools:ignore="MissingPrefix" />
</network-security-config>
【解决方法(2)】
服务器和本地应用都改用 https
【解决方法(3)】
targetSdkVersion 降级回到 27