如何修改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
相关产品推荐
相关产品推荐

