问题
今天发现高德闪退,打断点一看。
高德8.0.0+ 新增了隐私相关的内容,导致初始化失败了。
java.lang.Exception: 确保调用SDK任何接口前先调用更新隐私合规updatePrivacyShow、updatePrivacyAgree两个接口并且参数值都为true,若未正确设置有崩溃风险 使用loc SDK 功能前请设置隐私权政策是否弹窗告知用户
解决
在初始化之前,先调用updatePrivacyShow与updatePrivacyAgree API
try {
ServiceSettings.updatePrivacyShow(context, true, true);
ServiceSettings.updatePrivacyAgree(context,true);
locationClient = new AMapLocationClient(context);
} catch (Exception e) {
e.printStackTrace();
}
新问题
这两APi是在8.0.0以后才新增的,所以老版本的就不能用了。得集成高德最新的Api。
设置成自动更新就行
//高德地图
implementation 'com.amap.api:3dmap:latest.integration'
//高德定位
implementation 'com.amap.api:location:latest.integration'
//高德搜索
implementation 'com.amap.api:search:latest.integration'
//implementation 'com.amap.api:search:6.9.2'
但是我之前为什么不直接设置成这样呢,要写死6.9.2版本呢?
因为新版搜索无法得到区的名和编码 Adcode等值
找文档找半天,也没有找到怎么才能获取这两个值
然后再web的接口文档上找到了答案
得在请求参数上得将extensions 设置为 all
得在请求参数上得将extensions 设置为 all
那 extensions 怎么设置成all呢?
因为高德混淆了,源码全是abcd,所以找的挺费劲。
最后在PoiSearch.Query
里找到了这个参数的设置。
query.setExtensions(PoiSearch.EXTENSIONS_ALL);
至此,高德搜索的数据都能正常返回了。 如果别的接口,也是这样,无法返回全部数据。也是找请求参数
将extensions 设置为 all