Flutter如何配置Android串口权限

在Flutter项目中,我需要使用串口与Android设备通信,但在AndroidManifest.xml中配置权限后依然无法访问硬件。具体报错提示缺少串口操作权限。请问正确的权限配置流程是什么?是否需要额外修改build.gradle文件或引入第三方库?求详细的解决方案,谢谢!

2 回复

android/app/src/main/AndroidManifest.xml中添加:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

并确保设备已开启USB调试模式。

更多关于Flutter如何配置Android串口权限的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中配置 Android 串口权限,需要修改 Android 项目的配置文件。以下是具体步骤:

  1. 添加串口权限
    打开 android/app/src/main/AndroidManifest.xml 文件,在 <manifest> 标签内添加以下权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 串口通信需要以下权限 -->
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    
  2. 配置设备访问权限(可选)
    如果应用需要访问特定 USB 设备,可添加以下配置(位于 <application> 标签内):

    <meta-data
        android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
        android:resource="@xml/device_filter" />
    

    并在 android/app/src/main/res/xml/ 目录下创建 device_filter.xml 文件,定义支持的设备 VID/PID。

  3. 动态权限申请(针对 Android 6.0+)
    在 Flutter 代码中使用 permission_handler 插件动态申请权限:

    import 'package:permission_handler/permission_handler.dart';
    
    void requestPermissions() async {
      if (await Permission.manageExternalStorage.isDenied) {
        await Permission.manageExternalStorage.request();
      }
    }
    
  4. 串口通信实现
    推荐使用 flutter_libserialport 库进行串口操作:

    dependencies:
      flutter_libserialport: ^0.1.0
    

    示例代码:

    import 'package:flutter_libserialport/flutter_libserialport.dart';
    
    void openSerialPort() {
      var port = SerialPort('COM3'); // 根据实际端口修改
      port.open();
    }
    

注意事项

  • 部分设备可能需要 root 权限才能访问串口
  • 不同 Android 版本权限要求可能不同
  • 实际端口名称需根据设备调整

完成以上配置后,即可在 Flutter 应用中正常使用串口功能。

回到顶部