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


【版本信息】:开发工具版本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
实现手机碰触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的应用。需要检查以下配置:
-
确认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" }] }] }] -
验证URI完整性:确保NFC卡片写入的URI与配置完全匹配(包括大小写),例如
txsdc://center需与配置的scheme和host一致。 -
检查默认应用设置:如果设备上存在多个应用注册相同URI Scheme,系统会触发选择器。可尝试在系统设置中清除默认应用记录后重试。
-
测试环境:确认设备仅安装当前开发应用,避免其他应用声明相同Scheme导致冲突。
若问题仍存在,建议检查DevEco Studio日志,确认Ability是否正常响应URI。HarmonyOS的URI机制与Android类似,但需通过skills配置实现自动拉起。

