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

升级SDK到31后Android13设备授予定位权限时Flutter应用崩溃

问题解决方案

核心原因

你的问题本质是旧版本依赖与Android 13(SDK 31)权限模型不兼容,再加上Flutter版本过老,对Android 13的适配支持缺失导致崩溃:

  • Android 13新增了POST_NOTIFICATIONS权限要求,后台定位必须依赖该权限;同时后台定位权限(ACCESS_BACKGROUND_LOCATION)的申请逻辑变更,必须先获取前台定位权限才能申请。
  • 你使用的background_locator: ^1.3.0+1和geolocator: ^6.2.1都是多年前的版本,完全没有适配Android 13的权限规则;Flutter 1.22.6更是2020年的旧版本,对Android 13的系统API兼容性极差。

具体修复步骤

  1. 强制升级核心依赖版本
    旧版本的定位相关库已停止维护,必须升级到支持Android 13的版本:

    • 将geolocator升级到^10.0.0及以上版本(该版本完全适配Android 13权限)
    • 替换background_locator为geolocator自带的后台定位功能(background_locator已多年未更新,无Android 13适配),或者使用维护活跃的flutter_background_geolocation库
    • 升级Flutter到3.x稳定版,确保对Android 13的系统API支持
  2. 适配Android 13权限声明
    在android/app/src/main/AndroidManifest.xml中添加必要的权限:

<!-- 前台定位权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 后台定位权限 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<!-- Android 13通知权限(后台定位必须依赖) -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
  1. 修正权限申请流程
    Android 13不允许直接请求后台定位权限,必须遵循「前台权限→后台权限」的顺序:
// 1. 先请求前台定位权限
var status = await Geolocator.checkPermission();
if (status == LocationPermission.denied) {
  status = await Geolocator.requestPermission();
  if (status != LocationPermission.whileInUse && status != LocationPermission.always) {
    // 权限申请失败处理
    return;
  }
}

// 2. 再请求后台定位权限(始终允许)
if (status == LocationPermission.whileInUse) {
  status = await Geolocator.requestPermission();
}

// 3. 权限通过后再注册后台定位
if (status == LocationPermission.always) {
  // 这里替换为新库的后台定位注册逻辑
}
  1. 清理冲突的WorkManager依赖
    旧版background_locator内置的WorkManager版本与你手动添加的androidx.work:work-runtime可能存在版本冲突,升级依赖后无需手动添加该依赖,直接删除app/build.gradle中的相关配置即可。

临时替代方案(不推荐)

如果暂时无法大规模升级,可临时将compileSdkVersion和targetSdkVersion回退到30,但这会导致应用无法适配Android 13设备的新特性,仅作为过渡方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:23:08