安卓开发IOException: Cleartext traffic not permitted解决办法_艾孜尔江撰稿

思路:在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>

北工大软院艾孜尔江撰稿

发布了19 篇原创文章 · 获赞 9 · 访问量 740

猜你喜欢

转载自blog.csdn.net/weixin_43867242/article/details/103864565
今日推荐