树叶云鸿蒙OS教程:鸿蒙OS NFC消息通知

场景介绍

NFC 消息通知(Notification)是 HarmonyOS 内部或者与应用之间跨进程通讯的机制,注册者在注册消息通知后,一旦符合条件的消息被发出,注册者即可接收到该消息。

接口说明

描述通知名附加参数
NFC状态usual.event.nfc.action.ADAPTER_STATE_CHANGEDextra_nfc_state
进场消息usual.event.nfc.action.RF_FIELD_ON_DETECTEDextra_nfc_transaction
离场消息usual.event.nfc.action.RF_FIELD_OFF_DETECTED

注册并获取 NFC 状态改变消息

  1. 构建消息通知接收者 NfcStateEventSubscriber。
  1. 注册 NFC 状态改变消息。
  1. NfcStateEventSubscriber 接收并处理 NFC 状态改变消息。
   // 构建消息接收者/注册者
   class NfcStateEventSubscriber extends CommonEventSubscriber {
       NfcStateEventSubscriber (CommonEventSubscribeInfo info) {
           super(info);
       }

    
       @Override
       public void onReceiveEvent(CommonEventData commonEventData) {
           if (commonEventData == null || commonEventData.getIntent() == null) {
               return;
           }
           if (NfcController.STATE_CHANGED.equals(commonEventData.getIntent().getAction())) {
               IntentParams params = commonEventData.getIntent().getParams();
               if (params != null) {
                   int currState = commonEventData.getIntent().getIntParam(NfcController.EXTRA_NFC_STATE, NfcController.STATE_OFF);
               }
           }
       }
   }

    
   // 注册消息
   MatchingSkills matchingSkills = new MatchingSkills();
   // 增加获取 NFC 状态改变消息
   matchingSkills.addEvent(NfcController.STATE_CHANGED);
   matchingSkills.addEvent(CommonEventSupport.COMMON_EVENT_NFC_ACTION_ADAPTER_STATE_CHANGED);
   CommonEventSubscribeInfo subscribeInfo = new CommonEventSubscribeInfo(matchingSkills);
   NfcStateEventSubscriber subscriber = new NfcStateEventSubscriber(subscribeInfo);
   try {
       CommonEventManager.subscribeCommonEvent(subscriber);
   } catch (RemoteException e) {
       HiLog.e(TAG, "doSubscribe occur exception:" + e.toString());
   }

注册并获取 NFC 场强消息

  1. 构建消息通知接收者NfcFieldOnAndOffEventSubscriber。
  1. 注册 NFC 场强消息。
  1. NfcFieldOnAndOffEventSubscriber 接收并处理 NFC 场强消息。
   // 构建消息接收者/注册者
   class NfcFieldOnAndOffEventSubscriber extends CommonEventSubscriber {
       NfcFieldOnAndOffEventSubscriber (CommonEventSubscribeInfo info) {
           super(info);
       }

    
       @Override
       public void onReceiveEvent(CommonEventData commonEventData) {
           if (commonEventData == null || commonEventData.getIntent() == null) {
               return;
           }
           if (NfcController.FIELD_ON_DETECTED.equals(commonEventData.getIntent().getAction())) {
               IntentParams params = commonEventData.getIntent().getParams();
               if (params == null) {
                   HiLog.i(TAG, "Pure FIELD_ON_DETECTED");
               } else {
                   HiLog.i(TAG, "Transaction FIELD_ON_DETECTED");  
                   Intent transactionIntent = (Intent) params.getParam("transactionIntent");
               }
           } else if (NfcController.FIELD_OFF_DETECTED.equals(commonEventData.getIntent().getAction())) {
               HiLog.i(TAG, "FIELD_OFF_DETECTED");
           }
           HiLog.i(TAG, "MyFieldOnAndOffEventSubscriber onReceiveEvent ....:" + commonEventData.getIntent().getAction());
       }
   }

    
   // 注册消息
   MatchingSkills matchingSkills = new MatchingSkills();
   // 增加获取 NFC 状态改变消息
   matchingSkills.addEvent(NfcController.FIELD_ON_DETECTED);
   matchingSkills.addEvent(NfcController.FIELD_OFF_DETECTED);
   CommonEventSubscribeInfo subscribeInfo = new CommonEventSubscribeInfo(DomainMode.BOTH, matchingSkills);
   HiLog.i(TAG, "subscribeInfo permission: " + subscribeInfo.getPermission());
   MyFieldOnAndOffEventSubscriber subscriber = new MyFieldOnAndOffEventSubscriber(subscribeInfo);
   try {
       CommonEventManager.subscribeCommonEvent(subscriber);
   } catch (RemoteException e) {
       HiLog.e(TAG, "doSubscribe occur exception:" + e.toString());
   }

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/207443.html<

(0)
运维的头像运维
上一篇2025-04-08 13:20
下一篇 2025-04-08 13:22

相关推荐

  • hypervmart美国是什么?hypervmart美国官网入口

    2026 年 Hypervmart 美国站已全面接入 AI 智能选品与跨境物流自动化系统,成为中小卖家切入北美市场的首选低成本独立站解决方案,其核心优势在于“零库存 + 高转化”的闭环模式,随着 2026 年全球跨境电商进入“精细化运营”深水区,Hypervmart 美国站凭借其对北美消费者行为的深度洞察,在独……

    2026-05-02
    0
  • hypervmart是什么,hypervmart官网入口

    hypervmart 在 2026 年是否值得投资?核心结论:是,但需精准匹配供应链场景hypervmart 作为 2026 年跨境零售与 B2B 融合的新兴平台,其核心价值在于利用 AI 驱动的供应链优化技术,为中小卖家提供低于行业平均 15% 的履约成本,但成功与否高度依赖卖家对“跨境物流时效”与“海外仓选……

    2026-05-02
    0
  • RAKsmart独立服务器2026年测评,CN2 GIA实测数据与性能表现,CN2 GIA服务器到底怎么样,CN2 GIA独立服务器推荐

    RAKsmart 独立服务器在 2026 年已确立为连接中国内地与全球的高性能网络枢纽,其 CN2 GIA 线路实测延迟稳定在 35ms 以内,吞吐量突破 900Mbps,是跨境业务场景下兼顾稳定性与性价比的优选方案,核心网络性能深度解析2026 年 CN2 GIA 线路实测数据在 2026 年的网络架构中,R……

    2026-05-02
    0
  • hosteonsVPS测评,实测体验,hosteonsVPS怎么样?

    Hosteons VPS 在 2026 年的实测表现显示,其依托全球 BGP 线路优化与 NVMe 全闪存架构,在亚洲至北美跨洋延迟控制上表现优异,是追求高性价比与稳定性的中小型企业首选,但需注意其部分机房在晚高峰期的波动风险,核心性能与网络架构深度解析在 2026 年云计算基础设施全面向 AI 算力与边缘计算……

    2026-05-02
    0
  • BaCloud独立服务器测评不限流量实测表现,BaCloud独立服务器不限流量怎么样

    2026 年实测结论:BaCloud 独立服务器在不限流量场景下表现优异,特别适合高并发视频流媒体与大数据传输业务,其性价比与稳定性在同类竞品中处于第一梯队,但需关注其节点覆盖密度,在 2026 年云计算市场进入存量博弈与精细化运营并存的阶段,企业用户对于“不限流量”的诉求已从单纯的带宽大小转向实际吞吐能力与计……

    2026-05-02
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注