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

Flutter蓝牙应用在POCO M2 Pro无法扫描设备及libmigui.so缺失求助

解决POCO M2 Pro上Flutter蓝牙应用扫描失败问题

一、补全Android权限配置

你当前的权限仅适配旧版Android系统,POCO M2 Pro搭载Android 10/11,需补充高版本蓝牙权限:
在AndroidManifest.xml中添加以下配置:

<!-- Android 10+ 蓝牙扫描/连接核心权限 -->
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<!-- Android 12+ 可选广播权限(若需对外广播蓝牙信号) -->
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />

<!-- 声明应用依赖蓝牙BLE特性 -->
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />

注:如果你的应用需要通过蓝牙扫描获取位置信息,需移除android:usesPermissionFlags="neverForLocation",同时确保申请位置权限。

二、强制申请运行时权限

仅在Manifest配置权限无效,必须在代码中主动申请蓝牙及相关权限:

import 'package:permission_handler/permission_handler.dart';

// 扫描前调用该方法申请权限
Future<void> requestBluetoothPermissions() async {
  // 申请蓝牙扫描权限
  var scanStatus = await Permission.bluetoothScan.request();
  if (!scanStatus.isGranted) {
    // 提示用户前往设置授权
  }

  // 申请蓝牙连接权限
  var connectStatus = await Permission.bluetoothConnect.request();
  if (!connectStatus.isGranted) {
    // 提示用户前往设置授权
  }

  // 若需位置辅助扫描,申请位置权限
  var locationStatus = await Permission.locationWhenInUse.request();
  if (!locationStatus.isGranted) {
    // 提示用户前往设置授权
  }
}

三、修复libmigui.so缺失错误

该错误是MIUI系统特有问题,可通过以下两种方式解决:

  • 关闭MIUI优化:打开POCO M2 Pro的「设置」→「更多设置」→「开发者选项」,找到「MIUI优化」并关闭,重启设备后重新安装应用。
  • 更换蓝牙插件:若使用旧版flutter_blue,建议切换到维护分支flutter_blue_plus,它修复了大量MIUI适配问题。更新pubspec.yaml:
dependencies:
  flutter_blue_plus: ^1.13.18 # 替换为最新版本

执行flutter pub get后,替换代码中flutter_blue的相关调用。

四、额外排查项

  • 确认POCO M2 Pro蓝牙已开启,待连接外设处于可发现模式。
  • 检查应用是否被授予「后台弹出界面」权限,MIUI部分机型限制后台操作会影响蓝牙扫描。
  • 优先测试release包,debug包在MIUI上可能存在额外限制。

内容的提问来源于stack exchange,提问作者Bharath Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:21:06