Android 请求网络出现 CLEARTEXT communication to not permitted by network security policy

时间:2025-02-13 06:55:45

首先感谢 原作者的分享这个是链接

今天遇到 CLEARTEXT communication to not permitted by network security policy(网络安全策略不允许与(软件)进行明文通信)起因就是我弄了一个接口在一个新建的项目里面跑出现这个问题,一开始我还以为是我的网络请求框架出了问题或者是我的参数出现了问题但是并没有 我很自信的跑了起来但是就是不出现数据,我打印了一下error 的日志,不知道啥意思,然后我就百度了一下,醍醐灌顶可能是 项目升级到Androidx后就得进行设置后才能进行请求或者是https

方法一
修改: application中添加属性 android:networkSecurityConfig="@xml/network_security_config"
在路径为 res/xml/network_security_config.xml 创建这么一个文件
⚠️新项目是没有xml文件夹的我们需要创建一个然后在里面创建一个这个xml文件


<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>

示例:`

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="/apk/res/android"
    package="">
    <uses-permission android:name=""/>
    <uses-permission android:name=".WRITE_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:networkSecurityConfig="@xml/network_security_config"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="" />

                <category android:name="" />
            </intent-filter>
        </activity>
    </application>


</manifest>

我比较推荐这个方法

方法二
就是将服务器网站sttp升级到https

方法三
如果我猜的不错的话出现这个问题的都是Androidx或者新版的Androidstudio他的targetSdkVersion=“30" 目标版本 这个看app适配的手机进行更改最好不要改

    targetSdkVersion设置为小于28

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="27" />```