Android百度地图开发 踩坑集锦2 实现基本导航时无法搜索到路径,报错:E/HttpClient: Catch connection exception, INNER_ERROR

踩坑集锦2

这个问题在百度地图官网有讲到:http://lbsyun.baidu.com/index.php?title=androidsdk/guide/create-project/attention
支持HTTPS
地图SDK自v4.5.0起支持HTTPS协议,开发者可以通过setHttpsEnable(boolean isEnable);控制是否使用https,V5.3.2版本之前版本默认使用http协议;**V5.3.2版本之后(包含)默认使用https协议。
如果使用默认的http协议,由于Android P(包含更高版本)系统禁止使用所有未加密的连接,所以在使用检索功能(poi检索,路线规划,行政区域检索,地理编码,逆地理编码)会返回error.SEARCH_SERVER_INTERNAL_ERROR。**并有如下异常信息:
W/System.err: java.io.IOException: Cleartext HTTP traffic to **** not permitted

E/HttpClient: Catch connection exception, INNER_ERROR
针对该问题有以下三种解决方案如下:

  1. 初始化时改用https请求(建议);
  2. targetSdkVersion 降到27以下;
  3. 按如下方式更改网络安全配置
第一种解决方法

初始化时改用https请求(建议)

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

注意这是在onCreate方法中
正常是已经添加了initialize和setCoordType,只需要添加SDKInitializer.setHttpsEnable(true);就OK了。
推荐这种方法,简单,明确

第二种解决方法

将targetSdkVersion 降到27以下;在app目录下的build-gradle中修改。如图:
修改SDK版本
修改这个不推荐

第三种解决方法

在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件,文件内容如下:

   <?xml version="1.0" encoding="utf-8"?>
   <network-security-config>
     <base-config cleartextTrafficPermitted="true" />
   </network-security-config>

在AndroidManifest.xml文件下的application标签增加以下属性:

 <application
 ...
   android:networkSecurityConfig="@xml/network_security_config"
 ...
 />
 

注意:使用https,会存在加密、解密的过程,可能会影响效率。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值