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

如何移除Flutter Location插件自动添加的Android后台定位权限?

解决Flutter Location插件自动添加Android后台定位权限的问题

我之前也碰到过一模一样的情况!Flutter Location插件的Android端默认会把ACCESS_BACKGROUND_LOCATION权限加到合并后的Manifest里,哪怕你只用到单次前台定位。不过咱们可以通过以下几步彻底移除这个不必要的权限:

1. 在你的AndroidManifest.xml中强制移除权限

这是最直接有效的方法,利用Android的Manifest合并规则来覆盖插件的权限声明:

  • 打开android/app/src/main/AndroidManifest.xml
  • 首先确保根<manifest>标签包含tools命名空间:
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.your.app.package">
    
  • 在<application>标签外面,添加这条权限声明并设置tools:node="remove":
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" tools:node="remove" />
    
    这个配置会告诉Android构建工具:合并Manifest时,忽略所有来源的ACCESS_BACKGROUND_LOCATION权限声明,不会把它放进最终的构建产物里。

2. 确认插件初始化时只请求前台权限

虽然上面的步骤已经能移除权限,但为了更严谨,你可以在初始化Location时明确只请求前台定位权限:

Location location = Location();
// 请求前台定位权限(默认就是这个,但明确写出来更清晰)
PermissionStatus permissionStatus = await location.requestPermission();
if (permissionStatus == PermissionStatus.granted) {
  LocationData userLocation = await location.getLocation();
  // 处理定位数据
}

这样既符合你的业务需求,也和移除后台权限的操作逻辑一致。

3. 验证权限是否已移除

构建完Android版本后,你可以去build/intermediates/merged_manifest/release目录下找到合并后的AndroidManifest.xml,搜索ACCESS_BACKGROUND_LOCATION,确认它已经不在里面了。

做完这些,再上传Google Play就不会收到后台定位权限的提示啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:13:26