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,所以会存在加密和解密的过程,可能会影响效率。
作者:醉过才知酒浓
链接:https://juejin.im/post/5bfca3bce51d455ed8703d29
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。