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

Expo后台定位权限报错求助:已开系统权限仍提示未授权

解决方案

1. 补充后台权限请求代码

你当前仅请求了前台定位权限,但后台定位需要单独申请权限。修改App.js中的权限请求逻辑,在前台权限授予后追加后台权限请求:

useEffect(() => {
  (async () => {
    // 先请求前台定位权限
    let { status: foregroundStatus } = await Location.requestForegroundPermissionsAsync();
    if (foregroundStatus !== 'granted') {
      setErrorMsg('Permission to access location was denied');
      return;
    }

    // 再请求后台定位权限
    let { status: backgroundStatus } = await Location.requestBackgroundPermissionsAsync();
    if (backgroundStatus !== 'granted') {
      setErrorMsg('Background location permission was denied');
      return;
    }

    // 后续初始化后台定位逻辑
    // ...
  })();
}, []);

2. 完善app.json配置

除了权限列表,需在安卓专属配置中明确后台权限声明,确保Expo正确识别后台定位需求:

{
  "expo": {
    // 其他基础配置
    "android": {
      // 其他安卓配置
      "permissions": [
        "ACCESS_BACKGROUND_LOCATION",
        "ACCESS_FINE_LOCATION",
        "ACCESS_COARSE_LOCATION"
      ],
      "backgroundPermissions": ["ACCESS_BACKGROUND_LOCATION"]
    }
  }
}

3. 权限请求的关键注意事项

  • 必须遵循先前台、后后台的请求顺序,安卓系统强制要求后台权限请求需在前台权限授予后触发。
  • 避免APP启动时直接弹出后台权限请求,建议在用户主动开启追踪功能时再发起请求,降低被系统拒绝的概率。

4. 测试验证要点

  • 优先使用打包后的APK测试(通过expo build:android或eas build生成),Expo Go开发模式对部分后台权限支持有限。
  • 若手动开启权限后仍报错,尝试清除APP缓存并重启,确保系统权限设置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:15:57