Android 9 CLEARTEXT communication to … not permitted

发布于 / 杂谈 / 2 条评论

问题

最近在敲《第一行代码》书上案例酷欧天气时,遇到了两个小问题:一个是和风天气的接口问题,将weatherKey换成d4892ac004c84b498d27455a89623852后依然可以正常使用,这个就不多说了。还有一个问题就是在模拟器上运行没有问题,但是在自己的手机上运行时却“加载失败”,调试之后,发现是网络问题,但是换了一台手机测试竟然没有问题,这个时候我觉得和我手机安卓版本有关,我用的是手机系统版本是Android 9,而另一台手机系统是Android 8,于是又继续调试,终于在Android Studio的输出日志中发现了一句CLEARTEXT communication to guolin.tech not permitted by network security policy

解决

这句话意思很简单:网络安全策略不允许与guolin.tech之间进行明文通信,但是还是不知道修改哪里可以解决。网上搜索后发现也有人遇到了同样的问题

由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉,如果当前应用的请求是 htttp 请求,而非 https ,这样就会导系统禁止当前应用进行该请求,如果 WebView 的 url 用 http 协议,同样会出现加载失败,https 不受影响。为此,OkHttp3 做了检查,所以如果使用了明文流量,默认情况下,在 Android P 版本 OkHttp3 就抛出异常: CLEARTEXT communication to ” + host + ” not permitted by network security policy。

至于具体解决方案他也讲的很清楚了。简单一点,直接在AndroidMainfest.xml<Application下添加一句android:usesCleartextTraffic="true"即可解决。复杂一点如下:

其实最好还是使用HTTPS加密协议,就没有那么多问题了。

参考


The end.

2019年1月24日 星期四

转载原创文章请注明,转载自: 太傅亭 » Android 9 CLEARTEXT communication to … not permitted
  1. 惶心

    滴,惶心卡

    1. TaiFu_S
      @惶心

      欢迎欢迎~