我的解决方案:替换项目原有的网络框架库 Vollery 改用 Retrofit。
如果只想看解决方案的,到这里就可以了,以下我将会说明下我是怎么解决这个问题的。
场景 项目中的百度 SDK 版本比较老旧 4.1.1 版本,因为有些 Android 机例如 华为 系列细化了定位权限,光应用申请到定位权限还不够,还会有一个叫 位置信息 的开关控制,而 4.1.1 版本不会区分是应用定位权限没开还是位置信息没开。于是我升级百度 SDK 到 6.2.0 (目前最新的)。上述这个问题得到了解决,定位失败的提示语我也就优化好了。
新一期的版本迭代需要展示地图,也就是会用到 MapView 这个控件,按需求改好功能之后,进入地图页面直接闪退了,没有任何明确的异常抛出。然而我用 Android 9.0 的手机测试,却可以正常展示。
难道和系统版本有关? 我决定去百度官网下 demo 跑跑看,神奇的是 demo 在 9.0 和 有问题的那个手机(Android 4.4)上都正常,这么看来和系统没什么关系吧。我后来又找了 5.1.1,8.1,10.0 的系统分别进行测试,列了表格进行对比,发现 5.1.1 在逆地理编码解析上也出现了问题 javax.net.ssl.SSLHandshakeException: Handshake failed,HttpClient: Catch connection exception, INNER_ERROR。根据这个错误网上是可以查到跟百度地图相关的文章的,例如 https://www.jianshu.com/p/26c8590470a7,我也试着按这个方案去解决
文章评论