思路:在Application上直接添加——android:usesCleartextTraffic
它指示应用是否打算使用明文网络流量,如明文 HTTP。对于目标 API 级别为 27 或更低级别的应用,默认值为 “true”。对于目标 API 级别为 28 或更高级别的应用,默认值为 “false”。
如果将此属性设为 “false”,平台组件(例如 HTTP 和 FTP 堆栈、wnloadManager 和 MediaPlayer)将拒绝应用要使用明文流量的请求。强烈建议第三方库也遵循此设置。避免使用明文流量的主要原因是缺乏机密性、真实性和防止篡改的保护措施;网络攻击者可以窃听传输的数据,还可以在不被检测到的情况下修改数据。
此标志的遵循只能尽力而为,因为鉴于提供给 Android 应用的访问级别,不可能阻止来自这些应用的所有明文流量。例如,不要期望 Socket API 遵循此标志,因为它无法确定其流量是否采用明文形式。不过,来自应用的大部分网络流量都由较高级别的网络堆栈/组件处理,这些堆栈/组件可通过从 ApplicationInfo.flags 或 NetworkSecurityPolicy.isCleartextTrafficPermitted() 读取来遵循此标志。
详细解决方法:
AndroidManifest.xml 中添加如下代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>
北工大软院艾孜尔江撰稿