根据网络安全配置 https://developer.android.com/training/articles/security-config#CleartextTrafficPermitted -
从 Android 9(API 级别 28)开始,禁用明文支持
默认情况下。
还可以看看Android M 和明文流量之战 https://koz.io/android-m-and-the-war-on-cleartext-traffic/
Codelab 说明 https://developer.android.com/codelabs/android-network-security-config来自谷歌
选项1 -
首先尝试点击 URLhttps://
代替http://
选项 2 -
创建文件res/xml/network_security_config.xml
-
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">api.example.com(to be adjusted)</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>
选项 3 -
android:使用Cleartext交通文档 https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic
AndroidManifest.xml
-
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
Also as @david.s的回答 https://stackoverflow.com/a/45955297/7599300指出android:targetSandboxVersion
也可能是一个问题 -
根据清单文件 https://developer.android.com/guide/topics/manifest/manifest-element#targetSandboxVersion -
android:targetSandboxVersion
此应用程序要使用的目标沙箱。沙盒版本越高
数量越多,安全级别越高。其默认值为1;你
也可以将其设置为 2。将此属性设置为 2 会将应用切换到
不同的 SELinux 沙箱。以下限制适用于
2级沙箱:
- 默认值为
usesCleartextTraffic
网络安全配置中的值为 false。
- 不允许 Uid 共享。
所以选项 4 -
如果你有android:targetSandboxVersion
in <manifest>
然后将其减少到1
AndroidManifest.xml
-
<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>