高德地图:隐私合规校验失败 和 高德搜索API无法返回全部数据问题

2,073 阅读1分钟

问题

今天发现高德闪退,打断点一看。

b971b24edaa858851eb834bd7fc23a1.png

高德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的接口文档上找到了答案

image.png

得在请求参数上得将extensions 设置为 all

得在请求参数上得将extensions 设置为 all

那 extensions 怎么设置成all呢?
因为高德混淆了,源码全是abcd,所以找的挺费劲。

最后在PoiSearch.Query里找到了这个参数的设置。

query.setExtensions(PoiSearch.EXTENSIONS_ALL);

image.png

image.png

至此,高德搜索的数据都能正常返回了。 如果别的接口,也是这样,无法返回全部数据。也是找请求参数
将extensions 设置为 all