在HarmonyOS Next中接入“碰一碰”分享功能,主要通过NFC近场通信技术实现设备间的快速数据交换。以下是关键步骤:
-
配置权限
在 module.json5 中添加 NFC 权限:
"requestPermissions": [
{
"name": "ohos.permission.NFC_TAG"
}
]
-
声明 NFC 能力
在 module.json5 中注册 NFC 特性:
"abilities": [
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"formsEnabled": false,
"permissions": ["ohos.permission.NFC_TAG"]
}
]
-
初始化 NFC 适配器
在 Ability 中获取 NFC 控制器:
import tag from '[@ohos](/user/ohos).nfc.tag';
let nfcController;
tag.getNfcController().then(controller => {
nfcController = controller;
});
-
处理 NFC 标签发现
注册标签发现回调,并读取 NDEF 数据:
nfcController.on('tagDiscovered', (tagInfo) => {
if (tagInfo.ndefTag) {
tagInfo.ndefTag.readNdefMessage().then(ndefMessage => {
// 解析分享数据(如文本、URI等)
console.log(JSON.stringify(ndefMessage.records));
});
}
});
-
写入分享数据
将需要分享的数据封装为 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('写入成功');
});
-
前台调度优化
在 Ability 的 onCreate 中设置前台优先处理 NFC 事件:
nfcController.setFrontDispatch();
注意事项:
- 需确保设备支持 NFC 并已开启。
- 写入数据前需验证标签格式和容量。
- 分享内容需符合 NDEF 标准格式。
通过以上步骤,可快速实现设备间“碰一碰”分享文本、链接等轻量数据。