Android 12中Flutter项目BLUETOOTH_SCAN权限失效问题
解决Flutter蓝牙扫描权限错误问题
问题分析
错误提示明确要求BLUETOOTH_SCAN权限,你的配置存在两个核心问题:
BLUETOOTH_SCAN权限设置了android:maxSdkVersion="30",导致Android 12及以上(API≥31)的设备无法获取该权限- 未在代码中动态申请危险权限,仅在Manifest中声明不足以让系统授予权限
修复步骤
1. 修正AndroidManifest.xml权限配置
移除BLUETOOTH_SCAN的maxSdkVersion属性,确保高版本系统也能识别该权限:
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" tools:targetApi="donut" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" tools:targetApi="donut" /> <!-- 修正BLUETOOTH_SCAN权限配置 --> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" tools:targetApi="31" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />
注:如果扫描不需要关联位置信息,
android:usesPermissionFlags="neverForLocation"可保留;若需基于蓝牙的位置服务,需移除该属性并确保位置权限正常申请。
2. 在Flutter代码中动态申请权限
使用permission_handler包动态请求所需权限:
- 添加依赖到
pubspec.yaml:dependencies: permission_handler: ^10.2.0 # 可使用最新稳定版 - 在扫描蓝牙前先请求权限:
import 'package:permission_handler/permission_handler.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:device_info_plus/device_info_plus.dart'; Future<void> requestBluetoothPermissions() async { // Android 10及以下需额外请求位置权限 if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) { final androidInfo = await DeviceInfoPlugin().androidInfo; if (androidInfo.version.sdkInt <= 30) { await Permission.locationWhenInUse.request(); } } // 请求蓝牙核心权限 final scanGranted = await Permission.bluetoothScan.request().isGranted; final connectGranted = await Permission.bluetoothConnect.request().isGranted; if (scanGranted && connectGranted) { // 权限已授予,启动扫描 await bluetoothManager.scan(); } else { // 权限被拒绝,引导用户前往设置页开启 openAppSettings(); } }
3. 清理重建项目
执行以下命令清除缓存并重新运行:
flutter clean flutter run
内容的提问来源于stack exchange,提问作者Sibi Kumar
相关产品推荐
相关产品推荐

