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

Flutter应用Android13下NFC Manager锁Tag崩溃及权限拒绝问题

Flutter NFC Manager 锁定NFC标签在Android 13崩溃问题解决

可能的原因及解决方案

1. 缺失Android 13要求的NFC写入权限

Android 10(API 29)及以上版本中,WRITE_NFC属于危险权限,必须通过动态权限请求获取。Android 13对权限校验更加严格,若未获取该权限,执行标签锁定这类写入操作会触发权限拒绝错误,进而导致应用崩溃。

  • 先在AndroidManifest.xml中添加权限声明:
    <uses-permission android:name="android.permission.NFC" />
    <uses-permission android:name="android.permission.WRITE_NFC" />
    <uses-feature android:name="android.hardware.nfc" android:required="true" />
    
  • 在代码中动态请求WRITE_NFC权限:
    import 'package:permission_handler/permission_handler.dart';
    
    // 启动NFC操作前调用此方法
    Future<bool> requestNfcWritePermission() async {
      final status = await Permission.writeNfc.request();
      return status.isGranted;
    }
    
    务必确保调用标签锁定方法前,该权限已被用户授予。

2. NFC会话生命周期处理不当

Android 13对NFC会话的连接稳定性要求更高,若在锁定标签前会话已意外断开,会导致操作无响应并触发崩溃。

  • 确保调用锁定方法时,标签处于活跃连接状态:
    await NfcManager.instance.startSession(
      onDiscovered: (NfcTag tag) async {
        // 先验证标签连接有效性
        final isConnected = await tag.isConnected();
        if (!isConnected) {
          await NfcManager.instance.stopSession(errorMessage: '标签连接已断开');
          return;
        }
        // 执行锁定操作
        try {
          // 以NDEF标签为例调用锁定方法
          final ndef = Ndef.from(tag);
          if (ndef != null && ndef.isWritable) {
            await ndef.lock();
            await NfcManager.instance.stopSession();
          }
        } catch (e) {
          await NfcManager.instance.stopSession(errorMessage: '锁定失败: $e');
        }
      },
    );
    
  • 避免在异步操作中提前结束NFC会话,必须等锁定操作完成后再调用stopSession。

3. 升级NFC Manager插件至最新版本

插件可能已针对Android 13的兼容性问题发布修复版本,检查并升级nfc_manager依赖:

在pubspec.yaml中更新版本:

dependencies:
  nfc_manager: ^最新版本号

执行flutter pub get完成升级后重新测试。

日志分析说明

日志中的failed to attach to thread 641: Permission denied是崩溃后的调试工具权限问题,核心原因是应用执行NFC锁定操作时权限不足或会话异常,导致应用无响应触发系统信号(Signal 3)进而崩溃。

内容的提问来源于stack exchange,提问作者Rahul Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:34:53