You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

仅申请ACCESS_COARSE_LOCATION权限无法获取最低精度定位问题排查

可能的原因

  • 本地测试权限残留:你本地设备之前安装过包含ACCESS_FINE_LOCATION权限的旧版应用,Android系统会保留已授予的权限状态不会自动回收,所以本地测试时实际还是有精定位权限可用,功能自然正常。而从应用商店下载安装的新包,只会申请你配置的粗略定位权限,就触发了实际的权限缺失问题。
  • Expo SDK 40 底层实现缺陷:该版本的expo-location库存在已知逻辑问题,即便你显式传入了LocationAccuracy.Lowest的低精度参数,底层Java实现还是会默认校验ACCESS_FINE_LOCATION权限,没有该权限的情况下会直接抛出权限异常或返回空结果,不会主动降级到粗略定位逻辑。
  • 构建配置未同步:你移除ACCESS_FINE_LOCATION权限后,没有在app.json的expo.android.permissions字段中显式声明仅保留ACCESS_COARSE_LOCATION,Expo SDK 40的默认构建逻辑会自动为所有用到定位能力的项目注入ACCESS_FINE_LOCATION权限,部分应用商店在审核时如果发现你没有对应的精定位用途说明,会主动将该权限从你的安装包中移除,导致最终分发的包权限配置混乱。
  • 系统定位服务限制:部分定制安卓ROM或安卓12及以上版本中,用户如果在系统设置中全局关闭了精定位开关,仅开启粗略定位的情况下,应用即便申请了ACCESS_COARSE_LOCATION权限,也可能无法获取到定位结果。

可行的修复方案

  • 先完全卸载本地设备上的测试应用,重新安装无ACCESS_FINE_LOCATION权限的安装包复现问题,确认不是权限残留导致。
  • 升级expo-location到兼容低精度定位的版本,或者在Android原生层做权限适配,强制底层定位逻辑仅使用网络定位提供商,不需要精定位权限。
  • 在app.json中显式配置需要的权限,避免Expo自动注入多余权限:
{
  "expo": {
    "android": {
      "permissions": ["ACCESS_COARSE_LOCATION"]
    }
  }
}

内容的提问来源于stack exchange,提问作者Noitidart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:39:02