适配Android P(9.0)的问题 (百度地图)HttpClient: Catch connection exception, INNER_ERROR

前几天突然收到反馈说app在Android P上有问题,然后我查看了错误日志和各种文档终于找到了问题

Android P官方适配文档:developer.android.google.cn/about/versi…

百度地图Android 地图SDK:lbsyun.baidu.com/index.php?t…

因为我把targetSdkVersion 更新到了28。 由于app集成的百度地图的SDK是默认使用的http协议 但是由于在Android P(或更高版本中)系统是禁止使用所有的未加密的链接的; 所以在时用检索功能出现了这个错误

“HttpClient: Catch connection exception, INNER_ERROR”

这就是因为使用了Http协议来进行请求链接被系统给禁止了。

找到问题所在就知道怎么解决了 百度地图的官方文档已经给出了解决方案: (1)在初始化时设置使用Https请求(这是百度地图官方推荐的):

        // 在使用 SDK 各组间之前初始化 context 信息,传入 ApplicationContext
        SDKInitializer.initialize(this);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
        //设置使用https请求
        SDKInitializer.setHttpsEnable(true);

复制代码

这样就可以解决这个问题了

(2)就是把targetSdkVersion降到27以下(包含);

(3)更改网络安全的配置如下:

1.在res文件下创建一个xml文件夹,然后创建一个network_security_config.xml文件,文件内容如下:
复制代码
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true" />
</network-security-config>
复制代码
2.接着,在AndroidManifest.xml文件下的application标签增加以下属性:
复制代码
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
/>
复制代码

这是设置允许明文连接。

这三种方式都解决了我们的问题, 推荐是用第一种方式,不过第一种方式由于是用了Https,所以会存在加密和解密的过程,可能会影响效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值