Flutter集成Huawei Location Kit获取经纬度为空及调用接口抛PlatformException问题
华为Location Kit返回空经纬度及requestLocationUpdates抛出PlatformException故障原因
基础配置类故障
- 权限配置不符合要求:必须在
AndroidManifest.xml中声明ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION权限,Android 12及以上系统还需额外声明ACCESS_LOCATION_EXTRA_COMMANDS,后台定位场景需追加ACCESS_BACKGROUND_LOCATION;所有定位权限必须先完成动态申请,用户授权后再调用定位接口,未授权状态下调用会直接返回空值、抛出平台异常。 - 服务鉴权失败:AGC控制台配置的应用签名SHA256与实际打包签名不一致,或
agconnect-services.json文件未放入项目根目录,都会导致Location Kit服务鉴权不通过,接口调用无返回或抛出异常。 - HMS Core版本不兼容:设备安装的HMS Core版本低于Location Kit要求的最低版本,或HMS Core本身未获得定位权限,也会导致定位服务调用失败。
接口调用逻辑类故障
- 定位请求参数配置错误:构造
LocationRequest对象时,若设置的定位优先级与设备能力不匹配(例如设置高精度优先级但未开启GPS)、定位间隔配置不合理,首次调用无可用位置缓存时就会返回空值。 - 调用时序错误:首次调用
requestLocationUpdates()前无历史位置缓存时,部分版本SDK会直接抛出异常,建议先调用getLastLocation()判断是否有可用缓存,无缓存时再注册位置更新监听。 - 回调实现异常:
LocationCallback回调对象为空、回调方法逻辑错误,会导致SDK返回结果无法被正常接收,同时触发平台异常。
设备侧限制类故障
- 设备定位开关未开启:系统全局定位服务未开启时,所有定位接口调用都会失败,返回空值或抛出异常。
- 网络环境限制:选择网络定位优先级时,设备未联网无法获取基站、WiFi位置信息,也会导致定位返回空值。
可以优先从异常栈中提取错误码判断:返回错误码10800代表鉴权失败,优先排查签名与AGC配置;返回10801代表权限不足,优先排查动态权限与设备定位开关状态。
内容的提问来源于stack exchange,提问作者Foody
相关产品推荐
相关产品推荐

