Android

Android 9 适配遇到的坑及解决方案

2021-05-19  本文已影响0人  码农ing

最近在思考个问题-----APK 运行权限与文件系统权限的区别是什么?



在适配Android 9 上遇到的问题来啦!!!!Android 10 适配问题总结持续中....

问题1:Http请求失败SSL handshake timed out

解决办法:

        Android 9.0 开始,默认不允许明文传输,所以在建立网络连接时会使用 https 连接,同时进行安全认证。如果应用没有做对应处理,即会发生上述异常。在应用中的res/xml目录添加network_security_config.xml文件。内容如下:

接着在androidManifest.xml文件的<Application>标签里面添加android:networkSecurityConfig="@xml/network_security_config"即可解决此问题

 以上这是一种简单粗暴的配置方法,要么支持http,要么不支持http。为了安全灵活,我们可以指定支持的http域名:

问题2:Apache HTTP 客户端弃用

        在 Android 6.0 时,就已经取消了对 Apache HTTP 客户端的支持。 从 Android 9.0 开始,默认情况下该库已从 bootclasspath 中移除,但是耐不住有些SDK中还在使用,导致Android p 设备报错java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion

解决办法:

  在androidManifest.xml文件的<Application>标签的内部,添加一个子标签,内容为

<uses-library android:name="org.apache.http.legacy" android:required="false" />

问题3:FOREGROUND_SERVICE 权限,引发 SecurityException

问题4:启动Activity异常

      在9.0 中,不能直接非 Activity 环境中(比如Service,Application)启动 Activity,否则会崩溃报错;

这类问题一般会在点击推送消息跳转页面这类场景,解决方法就是 Intent 中添加标志FLAG_ACTIVITY_NEW_TASK。

上一篇下一篇

猜你喜欢

热点阅读