HarmonyOS鸿蒙Next中按照官网文档集成后nfc卡片内容为txsdc://center,期望直接拉起应用但实际需要选择,还需要配置什么吗

HarmonyOS鸿蒙Next中按照官网文档集成后nfc卡片内容为txsdc://center,期望直接拉起应用但实际需要选择,还需要配置什么吗 【问题描述】: 按照官网这个文档集成之后,nfc 卡片里边的内容为txsdc://center,Uri格式,期望的是可以直接拉起的应用,不需要像视频那样还需要选择,但是实际却不是这样,是还需要配置什么吗

【问题现象】:点击NFC后不是直接拉起应用,而是拉起用户选择器。

cke_11178.png

cke_12726.png

【版本信息】:开发工具版本DevEco Studio 5.1.1 Release、手机系统版本6.0、Api语言版本API(18)

【需求】:需求就是在后台进行NFC扫描时不仅要识别卡片类型,如果卡片内容是Uri Scheme,能够自动的去处理这个Uri Scheme。

像 Android 我配置了

    <intent-filter>
        <action android:name="xxxxx"/>
        <category android:name="xxxxx"/>
        <category android:name="xxxxx"/>
        <data android:scheme="txsdc"/>
    </intent-filter>

就能直接识别scheme 并且拉起应用,


更多关于HarmonyOS鸿蒙Next中按照官网文档集成后nfc卡片内容为txsdc://center,期望直接拉起应用但实际需要选择,还需要配置什么吗的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

实现手机碰触NFC硬件后跳转至应用的指定详情页前,需要将需拉起跳转的应用包名写入nfc当中,后续读卡时,根据读取到的nfc卡信息,便可拉起指定的应用。

【背景知识】 近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术。电子设备可以通过NFC通信技术和NFC标签通信,从标签中读取数据,或写入数据到标签,详情请参考NFC标签读写开发指南

【解决方案】 NFC卡片写入HarmonyOS包名需要调用tag.ndef.makeExternalRecord接口以tag.ndef.makeExternalRecord(“ohos.com”,“pkg”,[“com.xxx.xxxx”])传参方式向NFC卡片写入数据,详情请参考tag.ndef.makeExternalRecord,示例代码如下:

import { tag } from '@kit.ConnectivityKit';

try {
  let ndefRecord: tag.NdefRecord = tag.ndef.makeExternalRecord("ohos.com","pkg",["com.xxx.xxxx"]);
  if (ndefRecord != undefined) {
    console.log("ndefMessage makeExternalRecord rtdType: " + ndefRecord.rtdType);
    console.log("ndefMessage makeExternalRecord payload: " + ndefRecord.payload);
  } else {
    console.log("ndefMessage makeExternalRecord ndefRecord: " + ndefRecord);
  }
} catch (businessError) {
  console.error("ndefMessage makeExternalRecord catch businessError: " + businessError);
}

【总结】 可按格式tag.ndef.makeExternalRecord(“ohos.com”,“pkg”,[“com.xxx.xxxx”])向NFC卡片正确写入包名,触碰NFC时,只匹配到一个则拉起应用,匹配到多个时,需选择指定的应用。

更多关于HarmonyOS鸿蒙Next中按照官网文档集成后nfc卡片内容为txsdc://center,期望直接拉起应用但实际需要选择,还需要配置什么吗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


后台读写是指不打开特定的NFC标签应用程序,电子设备触碰发现NFC标签后,根据NFC标签的技术类型,分发给能够处理的应用程序。如果能匹配到多个应用程序,则弹出应用选择器列举出应用列表给用户手动选择。用户选择指定的应用后,自动跳转到应用程序的NFC标签读写卡页面,若匹配一个应用,则直接打开匹配到的应用程序。

可参考基于NFC的应用跳转

【背景知识】

NFC标签读写开发指南:近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行,通信距离一般在10厘米距离内。电子设备可以通过NFC通信技术和NFC标签通信,从标签中读取数据,或写入数据到标签。

这个我知道,但在安卓那边就是在后台进行NFC扫描时不仅要识别卡片类型,如果卡片内容是Uri Scheme,能够自动的去处理这个Uri Scheme。我NFC的内容是 txsdc://centercontrol ,即使包含了通用技术类型(如NDEF),也是应该能识别到内容并且处理才对。这个在鸿蒙是否无法实现?

我看这个NFC的内容没有将HarmonyOS包名写入NFC卡片,你可以参考我回复的方法写入后试试,

在HarmonyOS Next中,NFC卡片内容显示为txsdc://center表示已配置URI数据,但未设置正确的intent-filter动作。需在config.json中module标签下的abilities内,为对应EntryAbility添加"ohos.want.action.viewData"动作。同时确认URI协议与过滤器中scheme完全匹配,并检查设备NFC服务是否正常启用。

在HarmonyOS Next中,NFC卡片内容为txsdc://center时出现选择器而非直接拉起应用,通常是因为系统无法唯一确定处理该URI的应用。需要检查以下配置:

  1. 确认URI Scheme声明:在module.json5中确保已正确注册URI Scheme:

    "abilities": [{
      "name": "EntryAbility",
      "srcEntry": "./ets/entryability/EntryAbility.ets",
      "skills": [{
        "entities": ["entity.system.default"],
        "actions": ["action.system.view"],
        "uris": [{
          "scheme": "txsdc",
          "host": "center"
        }]
      }]
    }]
    
  2. 验证URI完整性:确保NFC卡片写入的URI与配置完全匹配(包括大小写),例如txsdc://center需与配置的scheme和host一致。

  3. 检查默认应用设置:如果设备上存在多个应用注册相同URI Scheme,系统会触发选择器。可尝试在系统设置中清除默认应用记录后重试。

  4. 测试环境:确认设备仅安装当前开发应用,避免其他应用声明相同Scheme导致冲突。

若问题仍存在,建议检查DevEco Studio日志,确认Ability是否正常响应URI。HarmonyOS的URI机制与Android类似,但需通过skills配置实现自动拉起。

回到顶部