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

如何修改Flutter Android合并Manifest中的BLUETOOTH_SCAN权限?

修改Android依赖插件合并后的权限属性

我已经知道如何移除权限,也清楚直接在自己的Manifest文件中声明就能添加新权限,但如果既不想移除也不想添加,只是修改已有权限的属性该怎么做?

比如在Android 12/13中,仅使用蓝牙功能的应用无需申请位置权限,因此部分插件会声明带neverForLocation标志的蓝牙扫描权限:

<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />

但如果你的应用确实需要通过蓝牙扫描获取位置信息,就需要把这个权限改成不带标志的常规声明:

<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

具体解决步骤:

  • 在你的AndroidManifest.xml根标签中添加tools命名空间(若未添加):
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
  • 声明BLUETOOTH_SCAN权限时,使用tools:replace属性覆盖插件带来的usesPermissionFlags属性:
<uses-permission
    android:name="android.permission.BLUETOOTH_SCAN"
    tools:replace="android:usesPermissionFlags" />

Manifest合并工具会用你声明的权限属性,替换掉插件中带neverForLocation的版本。

  • 最后添加所需的位置权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:35:26