flutter_bluetooth_serial 0.4.0在Android 12上无法运行的问题求助
Android 12下flutter_bluetooth_serial 0.4.0适配问题解决方案
从报错日志能看出两个核心问题:
- 权限缺失:Android 12新增了
BLUETOOTH_CONNECT权限,旧版本插件未适配该权限,导致启动蓝牙时触发SecurityException - 插件逻辑bug:权限请求回调时出现
Reply already submitted崩溃,是插件重复向MethodChannel发送回复导致的
解决步骤:
1. 补充AndroidManifest权限
打开android/app/src/main/AndroidManifest.xml,添加Android 12+所需的蓝牙权限,同时保留低版本兼容权限:
<!-- Android 12及以上蓝牙连接权限 --> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <!-- Android 11及以下蓝牙权限(仅低版本生效) --> <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> <!-- 蓝牙扫描需要定位权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
2. 动态申请蓝牙连接权限
在Flutter代码中,针对Android 12+版本,必须主动请求BLUETOOTH_CONNECT权限后,再执行蓝牙相关操作:
import 'package:permission_handler/permission_handler.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:device_info_plus/device_info_plus.dart'; // 检查并申请蓝牙连接权限 Future<bool> checkBluetoothConnectPermission() async { if (!kIsWeb && defaultTargetPlatform == TargetPlatform.android) { final androidDeviceInfo = await DeviceInfoPlugin().androidInfo; if (androidDeviceInfo.version.sdkInt >= 31) { final permissionStatus = await Permission.bluetoothConnect.request(); return permissionStatus.isGranted; } } return true; } // 调用示例:开启蓝牙前先校验权限 void enableBluetooth() async { bool hasPermission = await checkBluetoothConnectPermission(); if (hasPermission) { await FlutterBluetoothSerial.instance.requestEnable(); } }
需要在pubspec.yaml中添加依赖:
dependencies: permission_handler: ^10.2.0 device_info_plus: ^9.0.0
3. 修复Reply already submitted崩溃
flutter_bluetooth_serial 0.4.0版本未适配Android 12权限逻辑,导致重复回复MethodChannel调用,可通过以下方式解决:
- 优先升级插件:查看插件最新版本是否已修复该问题,若有则直接升级到最新版
- 替换插件:如果该插件长期未维护,可更换为
flutter_blue_plus这类适配Android 12+的蓝牙插件 - 手动修改源码:若无法升级/替换,可修改插件的
FlutterBluetoothSerialPlugin.java文件,在onActivityResult方法中添加判断,避免重复调用result.success()
内容的提问来源于stack exchange,提问作者Mohanashiyaam Balasubramaniam
相关产品推荐
相关产品推荐

