美文网首页Android开发Android进阶之路
android知识点——android 9 https访问

android知识点——android 9 https访问

作者: 半寿翁 | 来源:发表于2019-11-29 15:02 被阅读0次

    先扯两句

      其实这篇文章在开始写之前是打算按照(转)去写的,而且也确实收藏了一个解决方案的链接: chinaboyliusirAndroid 9 Pie:http及https的网络连接问题。当然,这里使用的解决方案是完全可以的,只是对于xml文件的创建位置,我在刚刚查到的时候没有反应过来在哪里创建。

    res目录结构
      如上图,无论在哪个目录下创建xml文件,添加“<network-security-config>”标签的时候通通报错,想必对于其他类似我这种菜鸟来说,到这也绝对一脸懵逼进行不下去了,后续又查了N多博客,但结果好像对于菜鸟都不太友好。最后不得不去android官网转了转才算是找到了解决方案。所以建议大家没什么事的时候,还是多去官网转转。
      老规矩,先提供一下Android知识点——目录的链接,然后让我们进入正题。

    正文

      前面已经扯得差不多了,其实唯一缺的就是network_security_config.xml放在哪里的问题。但是写一篇博客,怎么也得凑个篇幅不是,所以放哪里的问题解决后,就来说说所设置参数的含义吧。

    放啥

      其实只要两步操作即可,首先创建一个network_security_config.xml文件,这里也遇到了我曾经懵逼的问题,在哪建?android官网中自然有答案:网络安全配置

    配置文件目录
      是不是都找到在哪里了?还不知道的看下图。
    看这里!
      找到位置就好办了,之后就看放什么了。如上面官网截图,可以看到domain-config标签是cleartextTrafficPermitted,对于这种纯英文的东西,最好的方法当然是翻译一下喽。
    image.png
      让我很感动的是,这个翻译百度竟然没有选择直译,不过这也更方便我们理解上面的代码了:
    <网络安全配置>
        <域名配置 允许明文传输="否">
            <域名 包含子域="是">不允许明文传输的域名</域名>
        </域名配置>
    </网络安全配置>
    

      这段内容的用途是:

    应用可能需要确保所有与 secure.example.com 的连接始终是通过 HTTPS 完成,以防止来自恶意网络的敏感流量。

      当然,上面的这段单纯的就是为了理解一下其中每一个标签的作用,既然明确了就可以上我们

    <network-security-config>
            <domain-config cleartextTrafficPermitted="true"/>
    </network-security-config>
    

      也就是全局允许明文传输,这样配置就可以使用了。

    在哪?

    <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
         <application android:networkSecurityConfig="@xml/network_security_config"
                         ... >
                ...
        </application>
    </manifest>
    

    这段就没什么可纠结的了,在AndroidManifest.xml的application 添加android:networkSecurityConfig="@xml/network_security_config"即可。


    警告

    当然,大多数情况下,大家设置好了这个参数后,会出现上图警告,也就是说android:networkSecurityConfig是在api 24之后。我的个人比较偷懒,没有创建对应api的manifest目录,而是添加了tools:ignore="UnusedAttribute",忽略掉对应警告。

    <?xml version="1.0" encoding="utf-8"?>
    <manifest ... >
         <application android:networkSecurityConfig="@xml/network_security_config"
                  tools:ignore="UnusedAttribute"
                         ... >
                ...
        </application>
    </manifest>
    

    相关文章

      网友评论

        本文标题:android知识点——android 9 https访问

        本文链接:https://www.haomeiwen.com/subject/szdiwctx.html