异常
java.net.UnknownServiceException: CLEARTEXT communication to * not permitted by network
原因
Android P(API级别29) 是默认禁止访问 http的 API
解决方案1
http 改为 https(给你的服务器安装上 HTTPS正式证书)
解决方案2
找个SDK API 27 以下的手机
解决方案3(推荐)
在 AndroidManifest.xml —> application节点中增加
<application
...
android:usesCleartextTraffic="true"
...
/>
解决方案4(强推)
暂时先绕过 HTTP限制
1、在 res资源包中新建一个xml包
2、然后在 xml中新建一个 network_security_config.xml文件(如图)
新建后文件目录
新建 network_security_config.xml文件
xml中的内容
<network-security-config>
<!--禁止掉明文流量请求的检查-->
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
在 AndroidManifest.xml —> application节点中增加
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
/>
注意
绕过只是暂时的,因为有些迁移也是需要时间的,还是尽早适配为好,而且现在适配 Android Q也必须提上日程了,毕竟Q的适配相对强制性。
Android 9.0http适配原理
Android 10.0 适配最佳指南
参考博客(感谢以下博主)
1、java.net.UnknownServiceException
2、Android开发报错:UnknownServiceException