Flutter蓝牙权限缺失报错求助(已配置Manifest仍无效)
解决蓝牙权限缺失问题
1. 修复Android Manifest语法错误
你的Manifest代码中存在一个多余的>符号,这会导致Manifest解析异常,权限无法正确生效。找到以下代码段:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> > <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
删掉单独的>符号,修正后应为:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
2. 调整权限请求逻辑
在Android 12(API 31)及以上版本,旧的BLUETOOTH权限已被废弃,无需请求。修改权限请求代码,移除Permission.bluetooth:
Map<Permission, PermissionStatus> status = await [ Permission.bluetoothConnect, Permission.bluetoothScan, // 若无需蓝牙广播功能,可移除bluetoothAdvertise // Permission.bluetoothAdvertise, ].request(); print(status);
3. 验证蓝牙插件兼容性
日志中出现FlutterBluePlugin,说明你使用了flutter_blue插件。确保该插件已更新到支持Android 12+的最新稳定版,旧版本插件可能仍在调用依赖旧BLUETOOTH权限的API,触发权限报错。
4. 重新构建项目
执行以下命令彻底清理并重新构建,确保Manifest修改生效:
flutter clean flutter pub get flutter run # 或构建APK
额外说明
- 你已为旧版蓝牙权限(
BLUETOOTH、BLUETOOTH_ADMIN)配置android:maxSdkVersion="30",这部分设置正确,仅会在Android 11及以下版本生效。 - 若需扫描未配对设备,需确保位置权限的请求和配置;但打印凭证通常连接已配对设备,可根据实际场景调整位置权限。
内容的提问来源于stack exchange,提问作者Morheb Bek
相关产品推荐
相关产品推荐

