HarmonyOS鸿蒙Next中如何接入碰一碰分享功能?

HarmonyOS鸿蒙Next中如何接入碰一碰分享功能?

2 回复

在HarmonyOS Next中接入碰一碰分享功能,需使用NFC标签作为触发媒介。首先在DevEco Studio中创建原子化服务,配置NFC标签的NDEF数据格式。在entry/src/main/module.json5文件中声明NFC权限,添加ohos.permission.NFC_TAG标签。使用@ohos.nfc.tag系统接口编写NDEF消息处理逻辑,通过startAbility方法触发分享意图。分享数据需封装为Want对象,系统会自动匹配接收方应用。整个过程无需手动建立连接,由鸿蒙的分布式能力自动完成设备发现和数据传输。

更多关于HarmonyOS鸿蒙Next中如何接入碰一碰分享功能?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中接入“碰一碰”分享功能,主要通过NFC近场通信技术实现设备间的快速数据交换。以下是关键步骤:

  1. 配置权限
    module.json5 中添加 NFC 权限:

    "requestPermissions": [
      {
        "name": "ohos.permission.NFC_TAG"
      }
    ]
    
  2. 声明 NFC 能力
    module.json5 中注册 NFC 特性:

    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "formsEnabled": false,
        "permissions": ["ohos.permission.NFC_TAG"]
      }
    ]
    
  3. 初始化 NFC 适配器
    在 Ability 中获取 NFC 控制器:

    import tag from '[@ohos](/user/ohos).nfc.tag';
    
    let nfcController;
    tag.getNfcController().then(controller => {
      nfcController = controller;
    });
    
  4. 处理 NFC 标签发现
    注册标签发现回调,并读取 NDEF 数据:

    nfcController.on('tagDiscovered', (tagInfo) => {
      if (tagInfo.ndefTag) {
        tagInfo.ndefTag.readNdefMessage().then(ndefMessage => {
          // 解析分享数据(如文本、URI等)
          console.log(JSON.stringify(ndefMessage.records));
        });
      }
    });
    
  5. 写入分享数据
    将需要分享的数据封装为 NDEF 记录并写入标签:

    let ndefRecords = [
      {
        tnf: tag.NDEF_TNF_WELL_KNOWN,
        type: Array.from('T'), // 文本类型
        payload: Array.from('Hello HarmonyOS!')
      }
    ];
    tagInfo.ndefTag.writeNdefMessage(ndefRecords).then(() => {
      console.log('写入成功');
    });
    
  6. 前台调度优化
    在 Ability 的 onCreate 中设置前台优先处理 NFC 事件:

    nfcController.setFrontDispatch();
    

注意事项:

  • 需确保设备支持 NFC 并已开启。
  • 写入数据前需验证标签格式和容量。
  • 分享内容需符合 NDEF 标准格式。

通过以上步骤,可快速实现设备间“碰一碰”分享文本、链接等轻量数据。

回到顶部