这种是因为 网络安全配置错误​​。从 Android 9 (API 28) 开始,默认禁止应用使用未加密的 HTTP 协议(明文传输),而您的应用正在尝试通过 HTTP 访问 IP 地址。

这个时候你可以加一个配置文件去修改网络安全配置,允许特定的IP或域名进行未加密http传输。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">这里放你的IP或者域名</domain>
    </domain-config>
</network-security-config>

然后再 AndroidManifest.xml中引用此配置

<application
    android:networkSecurityConfig="@xml/network_security_config"
    ... >

这里就可以了,但是你在Android studio虚拟机上进行模拟运行时会报另一个错误了:
java.net.UnknownHostException: Unable to resolve host 'exple.com': No address associated with hostname

无法解析这个域名或IP,其实这个一般是因为虚拟机上的网络问题。我在真机上不会出现这个问题。

最后提一嘴,如果你的老安卓APP在新安卓系统上运行出现闪退这种情况,可以参考一下我这里的闪退原因:
老安卓APP是在安卓8开发的,然后最近换成安卓12系统运行出现问题,我排查后,发现是空指针导致系统直接闪退,加了判断条件后就没有出现闪退问题了。

所以我怀疑是高版本的安卓应该是对错误异常处理发生变化了和老版本处理异常的机制不一样的原因问题。

更多推荐