1# nfctech (标准NFC-Tag Nfc 技术) 2 3本模块主要用于采用不同Nfc技术的Tag的读写操作。 4 5> **说明:** 6> 7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9## 导入模块 10 11```js 12import { tag } from '@kit.ConnectivityKit'; 13``` 14 15## NfcATag 16 17NfcATag 提供 NFC-A(ISO 14443-3A)技术的属性和I/O操作的访问,继承自[TagSession](js-apis-tagSession.md)。 18 19TagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 20 21NfcATag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 22 23以下是NfcATag的独有接口。 24 25### NfcATag.getSak 26 27getSak(): number 28 29获取NFC-A标签的SAK值。 30 31**系统能力:** SystemCapability.Communication.NFC.Tag 32 33**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 34 35**返回值:** 36 37| **类型** | **说明** | 38| ------------------ | --------------------------| 39| number | NfcA 标签的SAK值,十六进制表示,范围是0x00~0xFF。 | 40 41**示例:** 42 43```js 44import { tag } from '@kit.ConnectivityKit'; 45 46// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcA 47let sak : number = nfcA.getSak(); 48console.info("nfcA sak: " + sak); 49``` 50 51### NfcATag.getAtqa 52 53getAtqa(): number[] 54 55获取NFC-A标签的Atqa值。 56 57**系统能力:** SystemCapability.Communication.NFC.Tag 58 59**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 60 61**返回值:** 62 63| **类型** | **说明** | 64| ------------------ | --------------------------| 65| number[] | NfcA 标签的Atqa值,每个number十六进制表示,范围是0x00~0xFF。 | 66 67**示例:** 68 69```js 70import { tag } from '@kit.ConnectivityKit'; 71 72// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcA 73let atqa : number[] = nfcA.getAtqa(); 74console.info("nfcA atqa: " + atqa); 75``` 76 77## NfcBTag 78 79NfcBTag 提供对NFC-B(ISO 14443-3B)技术的属性和I/O操作的访问,继承自TagSession。 80 81TagSession是所有NFC Tag技术类型的基类,提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 82 83NfcBTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 84 85以下是NfcBTag的独有接口。 86 87### NfcBTag.getRespAppData 88 89getRespAppData(): number[] 90 91获取标签的应用程序数据。 92 93**系统能力:** SystemCapability.Communication.NFC.Tag 94 95**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 96 97**返回值:** 98 99| **类型** | **说明** | 100| ------------------ | --------------------------| 101| number[] | NfcB 标签的应用程序数据,每个number十六进制表示,范围是0x00~0xFF。 | 102 103**示例:** 104 105```js 106import { tag } from '@kit.ConnectivityKit'; 107 108// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcB 109let respAppData : number[] = nfcB.getRespAppData(); 110console.info("nfcB respAppData: " + respAppData); 111``` 112 113### NfcBTag.getRespProtocol 114 115getRespProtocol(): number[] 116 117获取标签的协议信息。 118 119**系统能力:** SystemCapability.Communication.NFC.Tag 120 121**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 122 123**返回值:** 124 125| **类型** | **说明** | 126| ------------------ | --------------------------| 127| number[] | NfcB 标签的协议信息,每个number十六进制表示,范围是0x00~0xFF。| 128 129**示例:** 130 131```js 132import { tag } from '@kit.ConnectivityKit'; 133 134// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcB 135let respProtocol : number[] = nfcB.getRespProtocol(); 136console.info("nfcB respProtocol: " + respProtocol); 137``` 138 139## NfcFTag 140 141NfcFTag 提供对NFC-F(JIS 6319-4)技术的属性和I/O操作的访问,继承自TagSession。 142 143TagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 144 145NfcFTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 146 147以下是NfcFTag的独有接口。 148 149### NfcFTag.getSystemCode 150 151getSystemCode(): number[] 152 153从标签实例获取系统代码。 154 155**系统能力:** SystemCapability.Communication.NFC.Tag 156 157**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 158 159**返回值:** 160 161| **类型** | **说明** | 162| ------------------ | --------------------------| 163| number[] | NfcF 标签的系统代码,每个number十六进制表示,范围是0x00~0xFF。| 164 165**示例:** 166 167```js 168import { tag } from '@kit.ConnectivityKit'; 169 170// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcF 171let systemCode : number[] = nfcF.getSystemCode(); 172console.info("nfcF systemCode: " + systemCode); 173``` 174 175### NfcFTag.getPmm 176 177getPmm(): number[] 178 179从标签实例获取PMm(由IC代码和制造商参数组成)。 180 181**系统能力:** SystemCapability.Communication.NFC.Tag 182 183**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 184 185**返回值:** 186 187| **类型** | **说明** | 188| ------------------ | --------------------------| 189| number[] | NfcF 标签的PMm信息,每个number十六进制表示,范围是0x00~0xFF。| 190 191**示例:** 192 193```js 194import { tag } from '@kit.ConnectivityKit'; 195 196// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcF 197let pmm : number[] = nfcF.getPmm(); 198console.info("nfcF pmm: " + pmm); 199``` 200 201## NfcVTag 202 203NfcVTag 提供对NFC-V(ISO 15693)技术的属性和I/O操作的访问,继承自TagSession。 204 205TagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 206 207NfcVTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 208 209以下是NfcVTag的独有接口。 210 211### NfcvTag.getResponseFlags 212 213getResponseFlags(): number 214 215从标签实例实例获取响应标志。 216 217**系统能力:** SystemCapability.Communication.NFC.Tag 218 219**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 220 221**返回值:** 222 223| **类型** | **说明** | 224| ------------------ | --------------------------| 225| number | NfcV 标签的响应标志,十六进制表示,范围是0x00~0xFF。| 226 227**示例:** 228 229```js 230import { tag } from '@kit.ConnectivityKit'; 231 232// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcV 233let responseFlags : number = nfcV.getResponseFlags(); 234console.info("nfcV responseFlags: " + responseFlags); 235``` 236 237### NfcvTag.getDsfId 238 239getDsfId(): number 240 241从标签实例实例获取数据存储格式标识符(DSFID)。 242 243**系统能力:** SystemCapability.Communication.NFC.Tag 244 245**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 246 247**返回值:** 248 249| **类型** | **说明** | 250| ------------------ | --------------------------| 251| number | NfcV 标签的数据存储格式标识符,十六进制表示,范围是0x00~0xFF。| 252 253**示例:** 254 255```js 256import { tag } from '@kit.ConnectivityKit'; 257 258// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 nfcV 259let dsfId : number = nfcV.getDsfId(); 260console.info("nfcV dsfId: " + dsfId); 261``` 262 263## IsoDepTag<sup>9+</sup> 264 265IsoDepTag 提供对ISO-DEP(ISO 14443-4)技术的属性和I/O操作的访问,继承自TagSession。 266 267TagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 268 269IsoDepTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 270 271以下是IsoDepTag的独有接口。 272 273### IsoDepTag.getHistoricalBytes<sup>9+</sup> 274 275getHistoricalBytes(): number[] 276 277获取标签的历史字节,针对基于NfcA通信技术的IsoDep卡片。 278 279**系统能力:** SystemCapability.Communication.NFC.Tag 280 281**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 282 283**返回值:** 284 285| **类型** | **说明** | 286| ------------------ | --------------------------| 287| number[] | IsoDepTag 标签的历史字节,每个number十六进制表示,范围是0x00~0xFF。如果该IsoDep类型Tag是基于NfcB技术的,则该返回值为空。| 288 289**示例:** 290 291```js 292import { tag } from '@kit.ConnectivityKit'; 293 294// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 isoDep 295let historicalBytes : number[] = isoDep.getHistoricalBytes(); 296console.info("isoDep historicalBytes: " + historicalBytes); 297``` 298 299### IsoDepTag.getHiLayerResponse<sup>9+</sup> 300 301getHiLayerResponse(): number[] 302 303获取标签的更高层响应字节,针对基于NfcB通信技术的IsoDep卡片。 304 305**系统能力:** SystemCapability.Communication.NFC.Tag 306 307**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 308 309**返回值:** 310 311| **类型** | **说明** | 312| ------------------ | --------------------------| 313| number[] | IsoDepTag 标签的更高层响应字节,每个number十六进制表示,范围是0x00~0xFF。如果该IsoDep类型Tag是基于NfcA技术的,则该返回值为空。| 314 315**示例:** 316 317```js 318import { tag } from '@kit.ConnectivityKit'; 319 320// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 isoDep 321let hiLayerResponse : number[] = isoDep.getHiLayerResponse(); 322console.info("isoDep hiLayerResponse: " + hiLayerResponse); 323``` 324 325### IsoDepTag.isExtendedApduSupported<sup>9+</sup> 326 327isExtendedApduSupported(): Promise<boolean> 328 329检查是否支持扩展的APDU,使用Promise方式作为异步方法。 330 331**需要权限:** ohos.permission.NFC_TAG 332 333**系统能力:** SystemCapability.Communication.NFC.Tag 334 335**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 336 337**返回值:** 338 339| **类型** | **说明** | 340| ------------------ | --------------------------| 341| Promise<boolean> | 以Promise形式返回检查结果,true: 支持, false: 不支持。| 342 343**错误码:** 344 345以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 346 347| 错误码ID | 错误信息| 348| ------- | -------| 349| 201 | Permission denied. | 350| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 351| 3100201 | The tag running state is abnormal in the service. | 352| 3100204 | The tag I/O operation failed. | 353 354**示例:** 355 356```js 357import { tag } from '@kit.ConnectivityKit'; 358import { BusinessError } from '@kit.BasicServicesKit'; 359 360// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 isoDep 361function nfcTechDemo() { 362 // 如果没有连接Tag,请先连接 363 if (!isoDep.isTagConnected()) { 364 if (!isoDep.connectTag()) { 365 console.error("isoDep connectTag failed."); 366 return; 367 } 368 } 369 370 try { 371 isoDep.isExtendedApduSupported().then((response: boolean) => { 372 console.info("isoDep isExtendedApduSupported Promise response: " + response); 373 }).catch((err: BusinessError) => { 374 console.error("isoDep isExtendedApduSupported Promise Code: ${err.code}, message: ${err.message}"); 375 }); 376 } catch (businessError) { 377 console.error("isoDep isExtendedApduSupported Promise Code: ${(businessError as Businsess).code}, " + 378 "message: ${(businessError as Businsess).message}"); 379 } 380} 381 382``` 383 384### IsoDepTag.isExtendedApduSupported<sup>9+</sup> 385 386isExtendedApduSupported(callback: AsyncCallback\<boolean>): void 387 388检查是否支持扩展的APDU,使用AsyncCallback方式作为异步方法。 389 390**需要权限:** ohos.permission.NFC_TAG 391 392**系统能力:** SystemCapability.Communication.NFC.Tag 393 394**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 395 396**参数:** 397 398| 参数名 | 类型 | 必填 | 说明 | 399| -------- | ----------------------- | ---- | -------------------------------------- | 400| callback | AsyncCallback\<boolean> | 是 | 回调函数,true: 支持, false: 不支持。 | 401 402**错误码:** 403 404以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 405 406| 错误码ID | 错误信息| 407| ------- | -------| 408| 201 | Permission denied. | 409| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 410| 3100201 | The tag running state is abnormal in the service. | 411| 3100204 | The Tag I/O operation failed. | 412 413**示例:** 414 415```js 416import { tag } from '@kit.ConnectivityKit'; 417import { BusinessError } from '@kit.BasicServicesKit'; 418 419// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 isoDep 420function nfcTechDemo() { 421 // 如果没有连接Tag,请先连接 422 if (!isoDep.isTagConnected()) { 423 if (!isoDep.connectTag()) { 424 console.error("isoDep connectTag failed."); 425 return; 426 } 427 } 428 429 try { 430 isoDep.isExtendedApduSupported((err: BusinessError, response: boolean) => { 431 if (err) { 432 console.error("isoDep isExtendedApduSupported AsyncCallback Code: ${err.code}, message: ${err. message}"); 433 } else { 434 console.info("isoDep isExtendedApduSupported AsyncCallback response: " + response); 435 } 436 }); 437 } catch (busiErr) { 438 console.error("isoDep isExtendedApduSupported AsyncCallback Code: ${(businessError as Business).code}, " + "message: ${(businessError as Business).message}"); 439 } 440} 441 442``` 443 444## NdefMessage<sup>9+</sup> 445 446### NdefMessage.getNdefRecords<sup>9+</sup> 447 448getNdefRecords(): [tag.NdefRecord](js-apis-nfcTag.md#ndefrecord9)[] 449 450获取NDEF消息中的所有记录。 451 452**系统能力:** SystemCapability.Communication.NFC.Tag 453 454**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 455 456**返回值:** 457 458| **类型** | **说明** | 459| ------------------ | --------------------------| 460| [tag.NdefRecord](js-apis-nfcTag.md#ndefrecord9)[] | NDEF标签的Record列表,详见NDEF技术规范《NFCForum-TS-NDEF_1.0》。 | 461 462**示例:** 463 464```js 465import { tag } from '@kit.ConnectivityKit'; 466 467// 从 tag.ndef.createNdefMessage 或 ndefTag.getNdefMessage 获取 ndefMessage。 468// let ndefMessage : tag.NdefMessage = tag.ndef.createNdefMessage(...); 469// let ndefMessage : tag.NdefMessage = ndefTag.getNdefMessage(); 470 471let ndefRecords : tag.NdefRecord[] = ndefMessage.getNdefRecords(); 472console.info("ndef ndefRecords number: " + ndefRecords.length); 473``` 474 475## NdefTag<sup>9+</sup> 476 477提供对已格式化为NDEF的NFC标签的数据和操作的访问,继承自TagSession。 478 479TagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 480 481NdefTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 482 483以下是NdefTag的独有接口。 484 485### NdefTag.getNdefTagType<sup>9+</sup> 486 487getNdefTagType(): [tag.NfcForumType](js-apis-nfcTag.md#nfcforumtype9) 488 489获取NDEF标签的类型。 490 491**系统能力:** SystemCapability.Communication.NFC.Tag 492 493**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 494 495**返回值:** 496 497| **类型** | **说明** | 498| ------------------ | --------------------------| 499| [tag.NfcForumType](js-apis-nfcTag.md#nfcforumtype9) | NDEF标签类型,包括NFC FORUM TYPE 1/2/3/4等。| 500 501**示例:** 502 503```js 504import { tag } from '@kit.ConnectivityKit'; 505 506// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 507let ndefTagType : tag.NfcForumType = ndefTag.getNdefTagType(); 508console.info("ndef ndefTagType: " + ndefTagType); 509``` 510 511### NdefTag.getNdefMessage<sup>9+</sup> 512 513getNdefMessage(): [NdefMessage](#ndefmessage9) 514 515获取发现NDEF标签时,从标签读取的Message。 516 517**系统能力:** SystemCapability.Communication.NFC.Tag 518 519**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 520 521**返回值:** 522 523| **类型** | **说明** | 524| ------------------ | --------------------------| 525| [NdefMessage](#ndefmessage9) | NDEF标签的Message,详见NDEF技术规范《NFCForum-TS-NDEF_1.0》。| 526 527**示例:** 528```js 529import { tag } from '@kit.ConnectivityKit'; 530 531// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 532let ndefMessage : tag.NdefMessage = ndefTag.getNdefMessage(); 533console.info("ndef ndefMessage: " + ndefMessage); 534``` 535 536### NdefTag.isNdefWritable<sup>9+</sup> 537 538isNdefWritable(): boolean 539 540检查NDEF标签是否可写。在调用写数据接口前,需要先判断是否支持写操作。 541 542**系统能力:** SystemCapability.Communication.NFC.Tag 543 544**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 545 546**返回值:** 547 548| **类型** | **说明** | 549| ------------------ | --------------------------| 550| boolean | 检查结果,true: 可写, false: 不可写。| 551 552**示例:** 553 554```js 555import { tag } from '@kit.ConnectivityKit'; 556 557// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 558let isWritable : boolean = ndefTag.isNdefWritable(); 559console.info("ndef isNdefWritable: " + isWritable); 560``` 561 562### NdefTag.readNdef<sup>9+</sup> 563 564readNdef(): Promise\<[NdefMessage](#ndefmessage9)> 565 566读取标签上的NDEF消息,使用Promise方式作为异步方法。 567 568**需要权限:** ohos.permission.NFC_TAG 569 570**系统能力:** SystemCapability.Communication.NFC.Tag 571 572**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 573 574**返回值:** 575 576| **类型** | **说明** | 577| ------------------ | --------------------------| 578| Promise\<[NdefMessage](#ndefmessage9)> | 以Promise形式返回从NDEF标签中读取到的Message数据对象。| 579 580**错误码:** 581 582以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 583 584| 错误码ID | 错误信息| 585| ------- | -------| 586| 201 | Permission denied. | 587| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 588| 3100201 | The tag running state is abnormal in the service. | 589| 3100204 | The tag I/O operation failed. | 590 591**示例:** 592 593```js 594import { tag } from '@kit.ConnectivityKit'; 595import { BusinessError } from '@kit.BasicServicesKit'; 596 597// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 598function nfcTechDemo(){ 599 // 如果没有连接Tag,请先连接 600 if (!ndefTag.isTagConnected()) { 601 if (!ndefTag.connectTag()) { 602 console.error("ndefTag connectTag failed."); 603 return; 604 } 605 } 606 607 try { 608 ndefTag.readNdef().then((ndefmessage : tag.NdefMessage) => { 609 console.info("ndef readNdef Promise ndefmessage: " + ndefmessage); 610 }).catch((err : BusinessError)=> { 611 console.error("ndef readNdef Promise err Code: ${err.code}, message: ${err.message}"); 612 }); 613 } catch (businessError) { 614 console.error("ndef readNdef Promise catch businessError Code: ${(businessError as BusinessError).code}, " + 615 "message: ${(businessError as BusinessError).message}"); 616 } 617} 618 619``` 620 621### NdefTag.readNdef<sup>9+</sup> 622 623readNdef(callback: AsyncCallback\<[NdefMessage](#ndefmessage9)>): void 624 625读取标签上的NDEF消息,使用AsyncCallback方式作为异步方法。 626 627**需要权限:** ohos.permission.NFC_TAG 628 629**系统能力:** SystemCapability.Communication.NFC.Tag 630 631**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 632 633**参数:** 634 635| 参数名 | 类型 | 必填 | 说明 | 636| -------- | ----------------------- | ---- | -------------------------------------- | 637| callback | AsyncCallback\<[NdefMessage](#ndefmessage9)> | 是 | 回调函数,返回从NDEF标签中读取到的Message信息。| 638 639**错误码:** 640 641以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 642 643| 错误码ID | 错误信息| 644| ------- | -------| 645| 201 | Permission denied. | 646| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 647| 3100201 | The tag running state is abnormal in the service. | 648| 3100204 | The Tag I/O operation failed. | 649 650**示例:** 651 652```js 653import { tag } from '@kit.ConnectivityKit'; 654import { BusinessError } from '@kit.BasicServicesKit'; 655 656// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 657function nfcTechDemo() { 658 // 如果没有连接Tag,请先连接 659 if (!ndefTag.isTagConnected()) { 660 if (!ndefTag.connectTag()) { 661 console.error("ndefTag connectTag failed."); 662 return; 663 } 664 } 665 666 try { 667 ndefTag.readNdef((err : BusinessError, ndefmessage : tag.NdefMessage)=> { 668 if (err) { 669 console.error("ndef readNdef AsyncCallback err Code: ${err.code}, message: ${err.message}"); 670 } else { 671 console.info("ndef readNdef AsyncCallback ndefmessage: " + ndefmessage); 672 } 673 }); 674 } catch (businessError) { 675 console.error("ndef readNdef AsyncCallback catch Code: ${(businessError : BusinessError).code}," + 676 " message: ${(businessError : BusinessError).message}"); 677 } 678} 679 680``` 681 682### NdefTag.writeNdef<sup>9+</sup> 683 684writeNdef(msg: [NdefMessage](#ndefmessage9)): Promise\<void> 685 686将NDEF Message数据对象写入标签,使用Promise方式作为异步方法。 687 688**需要权限:** ohos.permission.NFC_TAG 689 690**系统能力:** SystemCapability.Communication.NFC.Tag 691 692**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 693 694**参数:** 695 696| 参数名 | 类型 | 必填 | 说明 | 697| -------- | ----------------------- | ---- | -------------------------------------- | 698| msg | [NdefMessage](#ndefmessage9) | 是 | NDEF Message数据对象。| 699 700**返回值:** 701 702| 类型 | 说明 | 703| ------------------------- | ------------------ | 704| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 705 706**错误码:** 707 708以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 709 710| 错误码ID | 错误信息| 711| ------- | -------| 712| 201 | Permission denied. | 713| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 714| 3100201 | The tag running state is abnormal in the service. | 715| 3100204 | The tag I/O operation failed. | 716 717**示例:** 718 719```js 720import { tag } from '@kit.ConnectivityKit'; 721import { BusinessError } from '@kit.BasicServicesKit'; 722 723// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 724// 从原始数据创建的ndefMessage,例如: 725let ndefMessage : tag.NdefMessage = 726 tag.ndef.createNdefMessage([0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]); // 必须是可以被解析的NDEF记录。 727// 或从 tag.ndef.createNdefMessage(ndefRecords:NdefRecord[]) 创建 ndefMessage 728 729function nfcTechDemo() { 730 // 如果没有连接Tag,请先连接 731 if (!ndefTag.isTagConnected()) { 732 if (!ndefTag.connectTag()) { 733 console.error("ndefTag connectTag failed."); 734 return; 735 } 736 } 737 738 try { 739 ndefTag.writeNdef(ndefMessage).then(() => { 740 console.info("ndef writeNdef Promise success."); 741 }).catch((err : BusinessError)=> { 742 console.error("ndef writeNdef err Code: ${err.code}, message: ${err.message}"); 743 }); 744 } catch (businessError) { 745 console.error("ndef writeNdef Promise catch businessError Code: ${(businessError as Businsess).code}, " + 746 "message: ${(businessError as Businsess).message}"); 747 } 748} 749``` 750 751### NdefTag.writeNdef<sup>9+</sup> 752 753writeNdef(msg: [NdefMessage](#ndefmessage9), callback: AsyncCallback\<void>): void 754 755将NDEF Message数据对象写入此标签,使用AsyncCallback方式作为异步方法。 756 757**需要权限:** ohos.permission.NFC_TAG 758 759**系统能力:** SystemCapability.Communication.NFC.Tag 760 761**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 762 763**参数:** 764 765| 参数名 | 类型 | 必填 | 说明 | 766| -------- | ----------------------- | ---- | -------------------------------------- | 767| msg | [NdefMessage](#ndefmessage9) | 是 | NDEF Message数据对象。 | 768| callback | AsyncCallback\<void> | 是 | 回调函数。 | 769 770**错误码:** 771 772以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 773 774| 错误码ID | 错误信息| 775| ------- | -------| 776| 201 | Permission denied. | 777| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 778| 3100201 | The tag running state is abnormal in the service. | 779| 3100204 | The Tag I/O operation failed. | 780 781**示例:** 782 783```js 784import { tag } from '@kit.ConnectivityKit'; 785import { BusinessError } from '@kit.BasicServicesKit'; 786 787// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 788// 从原始数据创建的ndefMessage,例如: 789let ndefMessage : tag.NdefMessage = 790 tag.ndef.createNdefMessage([0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]); // 必须是可以被解析的NDEF记录。 791// 或从 tag.ndef.createNdefMessage(ndefRecords:NdefRecord[]) 创建 ndefMessage 792 793function nfcTechDemo() { 794 // 如果没有连接Tag,请先连接 795 if (!ndefTag.isTagConnected()) { 796 if (!ndefTag.connectTag()) { 797 console.error("ndefTag connectTag failed."); 798 return; 799 } 800 } 801 802 try { 803 ndefTag.writeNdef(ndefMessage, (err : BusinessError)=> { 804 if (err) { 805 console.error("ndef writeNdef AsyncCallback Code: ${err.code}, message: ${err.message}"); 806 } else { 807 console.info("ndef writeNdef AsyncCallback success."); 808 } 809 }); 810 } catch (businessError) { 811 console.error("ndef writeNdef AsyncCallback catch businessError Code: ${(businessError as Businsess).code}," + 812 " message: ${(businessError as Businsess).message}"); 813 } 814} 815``` 816 817### NdefTag.canSetReadOnly<sup>9+</sup> 818 819canSetReadOnly(): boolean 820 821检查NDEF标签是否可以设置为只读。 822 823**需要权限:** ohos.permission.NFC_TAG 824 825**系统能力:** SystemCapability.Communication.NFC.Tag 826 827**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 828 829**返回值:** 830 831| **类型** | **说明** | 832| ------------------ | --------------------------| 833| boolean| true: NDEF标签可设置为只读, false: NDEF标签不可设置为只读。 | 834 835**错误码:** 836 837以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 838 839| 错误码ID | 错误信息| 840| ------- | -------| 841| 201 | Permission denied. | 842| 3100201 | The tag running state is abnormal in the service. | 843 844**示例:** 845 846```js 847import { tag } from '@kit.ConnectivityKit'; 848 849// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 850let canSetReadOnly : boolean = ndefTag.canSetReadOnly(); 851console.info("ndef canSetReadOnly: " + canSetReadOnly); 852``` 853 854### NdefTag.setReadOnly<sup>9+</sup> 855 856setReadOnly(): Promise\<void> 857 858将NDEF标签设置为只读,使用Promise方式作为异步方法。 859 860**需要权限:** ohos.permission.NFC_TAG 861 862**系统能力:** SystemCapability.Communication.NFC.Tag 863 864**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 865 866**返回值:** 867 868| 类型 | 说明 | 869| ------------------------- | ------------------ | 870| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 871 872**错误码:** 873 874以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 875 876| 错误码ID | 错误信息| 877| ------- | -------| 878| 201 | Permission denied. | 879| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 880| 3100201 | The tag running state is abnormal in the service. | 881| 3100204 | The tag I/O operation failed. | 882 883**示例:** 884 885```js 886import { tag } from '@kit.ConnectivityKit'; 887import { BusinessError } from '@kit.BasicServicesKit'; 888 889// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 890 891function nfcTechDemo() { 892 // 如果没有连接Tag,请先连接 893 if (!ndefTag.isTagConnected()) { 894 if (!ndefTag.connectTag()) { 895 console.error("ndefTag connectTag failed."); 896 return; 897 } 898 } 899 900 try { 901 ndefTag.setReadOnly().then(() => { 902 console.info("ndef setReadOnly Promise success."); 903 }).catch((err : BusinessError)=> { 904 console.error("ndef setReadOnly Promise err Code: ${err.code}, message: ${err.message}"); 905 }); 906 } catch (businessError) { 907 console.error("ndef setReadOnly Promise catch businessError Code: ${(businessError as Businsess).code}, " + 908 "message: ${(businessError as Businsess).message}"); 909 } 910} 911``` 912 913### NdefTag.setReadOnly<sup>9+</sup> 914 915setReadOnly(callback: AsyncCallback\<void>): void 916 917将NDEF标签设置为只读,使用AsyncCallback方式作为异步方法。 918 919**需要权限:** ohos.permission.NFC_TAG 920 921**系统能力:** SystemCapability.Communication.NFC.Tag 922 923**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 924 925**参数:** 926 927| 参数名 | 类型 | 必填 | 说明 | 928| -------- | ----------------------- | ---- | -------------------------------------- | 929| callback | AsyncCallback\<void> | 是 | 回调函数。 | 930 931**错误码:** 932 933以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 934 935| 错误码ID | 错误信息| 936| ------- | -------| 937| 201 | Permission denied. | 938| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 939| 3100201 | The tag running state is abnormal in the service. | 940| 3100204 | The Tag I/O operation failed. | 941 942**示例:** 943 944```js 945import { tag } from '@kit.ConnectivityKit'; 946import { BusinessError } from '@kit.BasicServicesKit'; 947 948// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 949 950function nfcTechDemo() { 951 // 如果没有连接Tag,请先连接 952 if (!ndefTag.isTagConnected()) { 953 if (!ndefTag.connectTag()) { 954 console.error("ndefTag connectTag failed."); 955 return; 956 } 957 } 958 959 try { 960 ndefTag.setReadOnly((err : BusinessError)=> { 961 if (err) { 962 console.error("ndef setReadOnly AsyncCallback err Code: ${err.code}, message: ${err.message}"); 963 } else { 964 console.info("ndef setReadOnly AsyncCallback success."); 965 } 966 }); 967 } catch (businessError) { 968 console.error("ndef setReadOnly AsyncCallback catch businessError Code: ${(businessError as Businsess).code}, " + 969 "message: ${(businessError as Businsess).message}"); 970 } 971} 972``` 973 974### NdefTag.getNdefTagTypeString<sup>9+</sup> 975 976getNdefTagTypeString(type: [tag.NfcForumType](js-apis-nfcTag.md#nfcforumtype9)): string 977 978将NFC论坛类型,转换为NFC论坛中定义的字符串描述。 979 980**系统能力:** SystemCapability.Communication.NFC.Tag 981 982**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 983 984**参数:** 985 986| 参数名 | 类型 | 必填 | 说明 | 987| -------- | ----------------------- | ---- | -------------------------------------- | 988| type | [tag.NfcForumType](js-apis-nfcTag.md#nfcforumtype9) | 是 | NDEF标签类型,包括NFC FORUM TYPE 1/2/3/4等。 | 989 990**返回值:** 991 992| **类型** | **说明** | 993| ------------------ | --------------------------| 994| string | NFC论坛类型的字符串描述。| 995 996**错误码:** 997 998以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 999 1000| 错误码ID | 错误信息| 1001| ------- | -------| 1002| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1003 1004**示例:** 1005 1006```js 1007import { tag } from '@kit.ConnectivityKit'; 1008import { BusinessError } from '@kit.BasicServicesKit'; 1009 1010// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefTag 1011 1012try { 1013 let ndefTypeString : string = ndefTag.getNdefTagTypeString(tag.NfcForumType.NFC_FORUM_TYPE_1); 1014 console.info("ndef ndefTypeString: " + ndefTypeString); 1015} catch (businessError) { 1016 console.error("ndef getNdefTagTypeString catch businessError Code: ${(businessError as Businsess).code}, " + 1017 "message: ${(businessError as Businsess).message}"); 1018} 1019``` 1020 1021## MifareClassicTag<sup>9+</sup> 1022 1023MifareClassicTag提供对MIFARE Classic属性和I/O操作的访问,继承自[TagSession](js-apis-tagSession.md)。 1024 1025TagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 1026 1027MifareClassicTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 1028 1029以下是MifareClassicTag的独有接口。 1030 1031### MifareClassicTag.authenticateSector<sup>9+</sup> 1032 1033authenticateSector(sectorIndex: number, key: number[], isKeyA: boolean): Promise\<void> 1034 1035使用密钥对扇区进行身份验证,只有身份验证成功的扇区可以进行操作。使用Promise方式作为异步方法。 1036 1037**需要权限:** ohos.permission.NFC_TAG 1038 1039**系统能力:** SystemCapability.Communication.NFC.Tag 1040 1041**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1042 1043**参数:** 1044 1045| 参数名 | 类型 | 必填 | 说明 | 1046| -------- | ----------------------- | ---- | -------------------------------------- | 1047| sectorIndex | number | 是 | 待验证的扇区索引,从0开始。 | 1048| key | number[]| 是 | 用于扇区验证的密钥(6字节)。 | 1049| isKeyA | boolean | 是 | isKeyA标志。true 表示KeyA,false 表示KeyB。| 1050 1051**返回值:** 1052 1053| 类型 | 说明 | 1054| ------------------------- | ------------------ | 1055| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 1056 1057**错误码:** 1058 1059以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1060 1061| 错误码ID | 错误信息| 1062| ------- | -------| 1063| 201 | Permission denied. | 1064| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1065| 3100201 | The tag running state is abnormal in the service. | 1066| 3100204 | The tag I/O operation failed. | 1067 1068**示例:** 1069 1070```js 1071import { tag } from '@kit.ConnectivityKit'; 1072import { BusinessError } from '@kit.BasicServicesKit'; 1073 1074// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1075 1076function nfcTechDemo() { 1077 // 如果没有连接Tag,请先连接 1078 if (!mifareClassic.isTagConnected()) { 1079 if (!mifareClassic.connectTag()) { 1080 console.error("mifareClassic connectTag failed."); 1081 return; 1082 } 1083 } 1084 1085 try { 1086 let sectorIndex = 1; // 将其更改为正确的 index 1087 let key = [0x01, 0x02, 0x03, 0x04, 0x05, 0x06] //必须是6个字节,将其更改为正确的key 1088 mifareClassic.authenticateSector(sectorIndex, key, true).then(() => { 1089 console.info("mifareClassic authenticateSector Promise success."); 1090 }).catch((err : BusinessError)=> { 1091 console.error("mifareClassic authenticateSector Promise errCode: ${err.code}, " + "message: ${err.message}"); 1092 }); 1093 } catch (businessError) { 1094 console.error("mifareClassic authenticateSector Promise catch businessError Code: ${(businessError as Businsess).code}, " + 1095 "message: ${(businessError as Businsess).message}"); 1096 } 1097} 1098``` 1099 1100### MifareClassicTag.authenticateSector<sup>9+</sup> 1101 1102authenticateSector(sectorIndex: number, key: number[], isKeyA: boolean, callback: AsyncCallback\<void>): void 1103 1104使用密钥对扇区进行身份验证,只有身份验证成功的扇区可以进行操作。使用AsyncCallback方式作为异步方法。 1105 1106**需要权限:** ohos.permission.NFC_TAG 1107 1108**系统能力:** SystemCapability.Communication.NFC.Tag 1109 1110**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1111 1112**参数:** 1113 1114| 参数名 | 类型 | 必填 | 说明 | 1115| -------- | ----------------------- | ---- | -------------------------------------- | 1116| sectorIndex | number | 是 | 待验证的扇区索引,从0开始。 | 1117| key | number[]| 是 | 用于扇区验证的密钥(6字节)。 | 1118| isKeyA | boolean | 是 | isKeyA标志。true 表示KeyA,false 表示KeyB。| 1119| callback | AsyncCallback\<void> | 是 | 以callback形式异步返回扇区验证结果。| 1120 1121**错误码:** 1122 1123以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1124 1125| 错误码ID | 错误信息| 1126| ------- | -------| 1127| 201 | Permission denied. | 1128| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1129| 3100201 | The tag running state is abnormal in the service. | 1130| 3100204 | The Tag I/O operation failed. | 1131 1132**示例:** 1133```js 1134import { tag } from '@kit.ConnectivityKit'; 1135import { BusinessError } from '@kit.BasicServicesKit'; 1136 1137// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1138 1139function nfcTechDemo() { 1140 // 如果没有连接Tag,请先连接 1141 if (!mifareClassic.isTagConnected()) { 1142 if (!mifareClassic.connectTag()) { 1143 console.error("mifareClassic connectTag failed."); 1144 return; 1145 } 1146 } 1147 1148 try { 1149 let sectorIndex = 1; // 将其更改为正确的 index 1150 let key = [0x01, 0x02, 0x03, 0x04, 0x05, 0x06] // 必须是6个字节,将其更改为正确的key 1151 mifareClassic.authenticateSector(sectorIndex, key, true, (err : BusinessError)=> { 1152 if (err) { 1153 console.error("mifareClassic authenticateSector AsyncCallback errCode: ${err.code}, message: ${err.message}"); 1154 } else { 1155 console.info("mifareClassic authenticateSector AsyncCallback success."); 1156 } 1157 }); 1158 } catch (businessError) { 1159 console.error("mifareClassic authenticateSector AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 1160 "message: ${(businessError as Businsess).message}"); 1161 } 1162} 1163``` 1164 1165### MifareClassicTag.readSingleBlock<sup>9+</sup> 1166 1167readSingleBlock(blockIndex: number): Promise\<number[]> 1168 1169读取标签中一个块存储的内容,一个块大小为16字节。使用Promise方式作为异步方法。 1170 1171**需要权限:** ohos.permission.NFC_TAG 1172 1173**系统能力:** SystemCapability.Communication.NFC.Tag 1174 1175**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1176 1177**参数:** 1178 1179| 参数名 | 类型 | 必填 | 说明 | 1180| -------- | ----------------------- | ---- | -------------------------------------- | 1181| blockIndex | number | 是 | 要读取的块索引,从0开始。 | 1182 1183**返回值:** 1184 1185| **类型** | **说明** | 1186| ------------------ | --------------------------| 1187| Promise\<number[]> | 以Promise形式返回读取的块数据。 | 1188 1189**错误码:** 1190 1191以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1192 1193| 错误码ID | 错误信息| 1194| ------- | -------| 1195| 201 | Permission denied. | 1196| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1197| 3100201 | The tag running state is abnormal in the service. | 1198| 3100204 | The tag I/O operation failed. | 1199 1200**示例:** 1201 1202```js 1203import { tag } from '@kit.ConnectivityKit'; 1204import { BusinessError } from '@kit.BasicServicesKit'; 1205 1206// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1207 1208function nfcTechDemo() { 1209 // 如果没有连接Tag,请先连接 1210 if (!mifareClassic.isTagConnected()) { 1211 if (!mifareClassic.connectTag()) { 1212 console.error("mifareClassic connectTag failed."); 1213 return; 1214 } 1215 } 1216 1217 try { 1218 let blockIndex = 1; // 将其更改为正确的 index 1219 mifareClassic.readSingleBlock(blockIndex).then((data : number[]) => { 1220 console.info("mifareClassic readSingleBlock Promise data: " + data); 1221 }).catch((err : BusinessError)=> { 1222 console.error("mifareClassic readSingleBlock Promise errCode: ${err.code}, message: ${err.message}"); 1223 }); 1224 } catch (businessError) { 1225 console.error("mifareClassic readSingleBlock Promise catch businessError Code: ${(businessError as Businsess).code}, " + 1226 "message: ${(businessError as Businsess).message}"); 1227 } 1228} 1229``` 1230 1231### MifareClassicTag.readSingleBlock<sup>9+</sup> 1232 1233readSingleBlock(blockIndex: number, callback: AsyncCallback\<number[]>): void 1234 1235读取标签中一个块存储的内容,一个块大小为16字节。使用AsyncCallback方式作为异步方法。 1236 1237**需要权限:** ohos.permission.NFC_TAG 1238 1239**系统能力:** SystemCapability.Communication.NFC.Tag 1240 1241**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1242 1243**参数:** 1244 1245| 参数名 | 类型 | 必填 | 说明 | 1246| -------- | ----------------------- | ---- | -------------------------------------- | 1247| blockIndex | number | 是 | 要读取的块索引,从0开始。 | 1248| callback | AsyncCallback\<number[]> | 是 |以callback形式异步返回读取到的块数据。 | 1249 1250**错误码:** 1251 1252以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1253 1254| 错误码ID | 错误信息| 1255| ------- | -------| 1256| 201 | Permission denied. | 1257| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1258| 3100201 | The tag running state is abnormal in the service. | 1259| 3100204 | The Tag I/O operation failed. | 1260 1261**示例:** 1262 1263```js 1264import { tag } from '@kit.ConnectivityKit'; 1265import { BusinessError } from '@kit.BasicServicesKit'; 1266 1267// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1268 1269function nfcTechDemo() { 1270 // 如果没有连接Tag,请先连接 1271 if (!mifareClassic.isTagConnected()) { 1272 if (!mifareClassic.connectTag()) { 1273 console.error("mifareClassic connectTag failed."); 1274 return; 1275 } 1276 } 1277 1278 try { 1279 let blockIndex = 1; // 将其更改为正确的 index 1280 mifareClassic.readSingleBlock(blockIndex, (err : BusinessError, data : number[])=> { 1281 if (err) { 1282 console.error("mifareClassic readSingleBlock AsyncCallback err: " + err); 1283 } else { 1284 console.info("mifareClassic readSingleBlock AsyncCallback data: " + data); 1285 } 1286 }); 1287 } catch (businessError) { 1288 console.error("mifareClassic readSingleBlock AsyncCallback catch businessError Code: " + 1289 " ${(businessError as Businsess).code}, message: ${(businessError as Businsess).message}"); 1290 } 1291} 1292``` 1293 1294### MifareClassicTag.writeSingleBlock<sup>9+</sup> 1295 1296writeSingleBlock(blockIndex: number, data: number[]): Promise\<void> 1297 1298向标签中一个块存储写入内容,一个块大小为16字节。使用Promise方式作为异步方法。 1299 1300**需要权限:** ohos.permission.NFC_TAG 1301 1302**系统能力:** SystemCapability.Communication.NFC.Tag 1303 1304**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1305 1306**参数:** 1307 1308| 参数名 | 类型 | 必填 | 说明 | 1309| -------- | ----------------------- | ---- | -------------------------------------- | 1310| blockIndex | number | 是 | 要写入的块索引,从0开始。 | 1311| data | number[] | 是 | 要写入的数据,大小必须是16个字节。 | 1312 1313**返回值:** 1314 1315| 类型 | 说明 | 1316| ------------------------- | ------------------ | 1317| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 1318 1319**错误码:** 1320 1321以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1322 1323| 错误码ID | 错误信息| 1324| ------- | -------| 1325| 201 | Permission denied. | 1326| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1327| 3100201 | The tag running state is abnormal in the service. | 1328| 3100204 | The tag I/O operation failed. | 1329 1330**示例:** 1331 1332```js 1333import { tag } from '@kit.ConnectivityKit'; 1334import { BusinessError } from '@kit.BasicServicesKit'; 1335 1336// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1337 1338function nfcTechDemo() { 1339 // 如果没有连接Tag,请先连接 1340 if (!mifareClassic.isTagConnected()) { 1341 if (!mifareClassic.connectTag()) { 1342 console.error("mifareClassic connectTag failed."); 1343 return; 1344 } 1345 } 1346 1347 try { 1348 let blockIndex = 1; // 将其更改为正确的 index 1349 let rawData = [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 1350 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10]; // 必须是16个字节,将其更改为正确的key 1351 mifareClassic.writeSingleBlock(blockIndex, rawData).then(() => { 1352 console.info("mifareClassic writeSingleBlock Promise success."); 1353 }).catch((err : BusinessError)=> { 1354 console.error("mifareClassic writeSingleBlock Promise errCode: ${err.code}, message: ${err.message}"); 1355 }); 1356 } catch (businessError) { 1357 console.error("mifareClassic writeSingleBlock Promise catch businessError Code: ${(businessError as Businsess).code}, " 1358 + "message: ${(businessError as Businsess).message}"); 1359 } 1360} 1361``` 1362 1363### MifareClassicTag.writeSingleBlock<sup>9+</sup> 1364 1365writeSingleBlock(blockIndex: number, data: number[], callback: AsyncCallback\<void>): void 1366 1367向标签中一个块存储写入内容,一个块大小为16字节。使用AsyncCallback方式作为异步方法。 1368 1369**需要权限:** ohos.permission.NFC_TAG 1370 1371**系统能力:** SystemCapability.Communication.NFC.Tag 1372 1373**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1374 1375**参数:** 1376 1377| 参数名 | 类型 | 必填 | 说明 | 1378| -------- | ----------------------- | ---- | -------------------------------------- | 1379| blockIndex | number | 是 | 要写入的块索引,从0开始。 | 1380| data | number[] | 是 | 要写入的数据,大小必须是16个字节。 | 1381| callback | AsyncCallback\<void> | 是 | 以callback形式异步返回块操作结果。 | 1382 1383**错误码:** 1384 1385以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1386 1387| 错误码ID | 错误信息| 1388| ------- | -------| 1389| 201 | Permission denied. | 1390| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1391| 3100201 | The tag running state is abnormal in the service. | 1392| 3100204 | The Tag I/O operation failed. | 1393 1394**示例:** 1395 1396```js 1397import { tag } from '@kit.ConnectivityKit'; 1398import { BusinessError } from '@kit.BasicServicesKit'; 1399 1400// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1401 1402function nfcTechDemo() { 1403 // 如果没有连接Tag,请先连接 1404 if (!mifareClassic.isTagConnected()) { 1405 if (!mifareClassic.connectTag()) { 1406 console.error("mifareClassic connectTag failed."); 1407 return; 1408 } 1409 } 1410 1411 try { 1412 let blockIndex = 1; // 将其更改为正确的 index 1413 let rawData = [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 1414 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10]; //必须是16个字节,将其更改为正确的data 1415 mifareClassic.writeSingleBlock(blockIndex, rawData, (err : BusinessError)=> { 1416 if (err) { 1417 console.error("mifareClassic writeSingleBlock AsyncCallback err Code:" + 1418 "${err.code}, message: ${err.message}"); 1419 } else { 1420 console.info("mifareClassic writeSingleBlock AsyncCallback success."); 1421 } 1422 }); 1423 } catch (businessError) { 1424 console.error("mifareClassic writeSingleBlock AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 1425 "message: ${(businessError as Businsess).message}"); 1426 } 1427} 1428``` 1429 1430### MifareClassicTag.incrementBlock<sup>9+</sup> 1431 1432incrementBlock(blockIndex: number, value: number): Promise\<void> 1433 1434对指定块的内容,增加指定的数值,并将结果存储在内部传输缓冲器中。使用Promise方式作为异步方法。 1435 1436**需要权限:** ohos.permission.NFC_TAG 1437 1438**系统能力:** SystemCapability.Communication.NFC.Tag 1439 1440**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1441 1442**参数:** 1443 1444| 参数名 | 类型 | 必填 | 说明 | 1445| -------- | ----------------------- | ---- | -------------------------------------- | 1446| blockIndex | number | 是 | 要指定增加的块索引,从0开始。 | 1447| value | number | 是 | 要指定增加的数据,非负数。 | 1448 1449**返回值:** 1450 1451| 类型 | 说明 | 1452| ------------------------- | ------------------ | 1453| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 1454 1455**错误码:** 1456 1457以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1458 1459| 错误码ID | 错误信息| 1460| ------- | -------| 1461| 201 | Permission denied. | 1462| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1463| 3100201 | The tag running state is abnormal in the service. | 1464| 3100204 | The tag I/O operation failed. | 1465 1466**示例:** 1467 1468```js 1469import { tag } from '@kit.ConnectivityKit'; 1470import { BusinessError } from '@kit.BasicServicesKit'; 1471 1472// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1473 1474function nfcTechDemo() { 1475 // 如果没有连接Tag,请先连接 1476 if (!mifareClassic.isTagConnected()) { 1477 if (!mifareClassic.connectTag()) { 1478 console.error("mifareClassic connectTag failed."); 1479 return; 1480 } 1481 } 1482 1483 try { 1484 let blockIndex = 1; // 将其更改为正确的 index 1485 let value = 0x20; // 将其更改为正确的数据 1486 mifareClassic.incrementBlock(blockIndex, value).then(() => { 1487 console.info("mifareClassic incrementBlock Promise success."); 1488 }).catch((err : BusinessError)=> { 1489 console.error("mifareClassic incrementBlock Promise err Code: ${err.code}, message: ${err.message}"); 1490 }); 1491 } catch (businessError) { 1492 console.error("mifareClassic incrementBlock Promise catch Code: ${(businessError as Businsess).code}, " + 1493 "message: ${(businessError as Businsess).message}"); 1494 } 1495} 1496``` 1497 1498### MifareClassicTag.incrementBlock<sup>9+</sup> 1499 1500incrementBlock(blockIndex: number, value: number, callback: AsyncCallback\<void>): void 1501 1502对指定块的内容,增加指定的数值,并将结果存储在内部传输缓冲器中。使用AsyncCallback方式作为异步方法。 1503 1504**需要权限:** ohos.permission.NFC_TAG 1505 1506**系统能力:** SystemCapability.Communication.NFC.Tag 1507 1508**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1509 1510**参数:** 1511 1512| 参数名 | 类型 | 必填 | 说明 | 1513| -------- | ----------------------- | ---- | -------------------------------------- | 1514| blockIndex | number | 是 | 要被运算的块索引,从0开始。 | 1515| value | number | 是 | 要增加的数值,非负数。 | 1516| callback | AsyncCallback\<void> | 是 | 以callback形式异步返回块操作结果。。 | 1517 1518**错误码:** 1519 1520以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1521 1522| 错误码ID | 错误信息| 1523| ------- | -------| 1524| 201 | Permission denied. | 1525| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1526| 3100201 | The tag running state is abnormal in the service. | 1527| 3100204 | The Tag I/O operation failed. | 1528 1529**示例:** 1530 1531```js 1532import { tag } from '@kit.ConnectivityKit'; 1533import { BusinessError } from '@kit.BasicServicesKit'; 1534 1535// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1536 1537function nfcTechDemo() { 1538 // 如果没有连接Tag,请先连接 1539 if (!mifareClassic.isTagConnected()) { 1540 if (!mifareClassic.connectTag()) { 1541 console.error("mifareClassic connectTag failed."); 1542 return; 1543 } 1544 } 1545 1546 try { 1547 let blockIndex = 1; // 将其更改为正确的 index 1548 let value = 0x20; // 将其更改为正确的数据 1549 mifareClassic.incrementBlock(blockIndex, value, (err : BusinessError)=> { 1550 if (err) { 1551 console.error("mifareClassic incrementBlock AsyncCallback err Code: ${err.code}, message: ${err.message}"); 1552 } else { 1553 console.info("mifareClassic incrementBlock AsyncCallback success."); 1554 } 1555 }); 1556 } catch (businessError) { 1557 console.error("mifareClassic incrementBlock AsyncCallback catch businessError Code: ${(businessError as Businsess).code}, " + 1558 "message: ${(businessError as Businsess).message}"); 1559 } 1560} 1561``` 1562 1563### MifareClassicTag.decrementBlock<sup>9+</sup> 1564 1565decrementBlock(blockIndex: number, value: number): Promise\<void> 1566 1567对指定块的内容,减少指定的数值,并将结果存储在内部传输缓冲器中。使用Promise方式作为异步方法。 1568 1569**需要权限:** ohos.permission.NFC_TAG 1570 1571**系统能力:** SystemCapability.Communication.NFC.Tag 1572 1573**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1574 1575**参数:** 1576 1577| 参数名 | 类型 | 必填 | 说明 | 1578| -------- | ----------------------- | ---- | -------------------------------------- | 1579| blockIndex | number | 是 | 要被运算的块索引,从0开始。 | 1580| value | number | 是 | 要减少的数值,非负数。 | 1581 1582**返回值:** 1583 1584| 类型 | 说明 | 1585| ------------------------- | ------------------ | 1586| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 1587 1588**错误码:** 1589 1590以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1591 1592| 错误码ID | 错误信息| 1593| ------- | -------| 1594| 201 | Permission denied. | 1595| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1596| 3100201 | The tag running state is abnormal in the service. | 1597| 3100204 | The tag I/O operation failed. | 1598 1599**示例:** 1600 1601```js 1602import { tag } from '@kit.ConnectivityKit'; 1603import { BusinessError } from '@kit.BasicServicesKit'; 1604 1605// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1606 1607function nfcTechDemo() { 1608 // 如果没有连接Tag,请先连接 1609 if (!mifareClassic.isTagConnected()) { 1610 if (!mifareClassic.connectTag()) { 1611 console.error("mifareClassic connectTag failed."); 1612 return; 1613 } 1614 } 1615 1616 try { 1617 let blockIndex = 1; // 将其更改为正确的 index 1618 let value = 0x20; // 将其更改为正确的数据 1619 mifareClassic.decrementBlock(blockIndex, value).then(() => { 1620 console.info("mifareClassic decrementBlock Promise success."); 1621 }).catch((err : BusinessError)=> { 1622 console.error("mifareClassic decrementBlock Promise errCode: ${err.code}, message: ${err.message}"); 1623 }); 1624 } catch (businessError) { 1625 console.error("mifareClassic decrementBlock Promise catch businessError: Code: ${(businessError as Businsess).code}, " + 1626 "message: ${(businessError as Businsess).message}"); 1627 } 1628} 1629``` 1630 1631### MifareClassicTag.decrementBlock<sup>9+</sup> 1632 1633decrementBlock(blockIndex: number, value: number, callback: AsyncCallback\<void>): void 1634 1635对指定块的内容,减少指定的数值。使用AsyncCallback方式作为异步方法。 1636 1637**需要权限:** ohos.permission.NFC_TAG 1638 1639**系统能力:** SystemCapability.Communication.NFC.Tag 1640 1641**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1642 1643**参数:** 1644 1645| 参数名 | 类型 | 必填 | 说明 | 1646| -------- | ----------------------- | ---- | -------------------------------------- | 1647| blockIndex | number | 是 | 要被运算的块索引,从0开始。 | 1648| value | number | 是 | 要减少的数值,非负数。 | 1649| callback | AsyncCallback\<void> | 是 | 以callback形式异步返回块操作结果。 | 1650 1651**错误码:** 1652 1653以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1654 1655| 错误码ID | 错误信息| 1656| ------- | -------| 1657| 201 | Permission denied. | 1658| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1659| 3100201 | The tag running state is abnormal in the service. | 1660| 3100204 | The Tag I/O operation failed. | 1661 1662**示例:** 1663 1664```js 1665import { tag } from '@kit.ConnectivityKit'; 1666import { BusinessError } from '@kit.BasicServicesKit'; 1667 1668// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1669 1670function nfcTechDemo() { 1671 // 如果没有连接Tag,请先连接 1672 if (!mifareClassic.isTagConnected()) { 1673 if (!mifareClassic.connectTag()) { 1674 console.error("mifareClassic connectTag failed."); 1675 return; 1676 } 1677 } 1678 1679 try { 1680 let blockIndex = 1; // 将其更改为正确的 index 1681 let value = 0x20; // 将其更改为正确的数据 1682 mifareClassic.decrementBlock(blockIndex, value, (err : BusinessError)=> { 1683 if (err) { 1684 console.error("mifareClassic decrementBlock AsyncCallback errCode:" + 1685 "${err.code}, message: ${err.message}"); 1686 } else { 1687 console.info("mifareClassic decrementBlock AsyncCallback success."); 1688 } 1689 }); 1690 } catch (businessError) { 1691 console.error("mifareClassic decrementBlock AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 1692 "message: ${(businessError as Businsess).message}"); 1693 } 1694} 1695``` 1696 1697### MifareClassicTag.transferToBlock<sup>9+</sup> 1698 1699transferToBlock(blockIndex: number): Promise\<void> 1700 1701将临时寄存器的值转移到指定的块。使用Promise方式作为异步方法。 1702 1703**需要权限:** ohos.permission.NFC_TAG 1704 1705**系统能力:** SystemCapability.Communication.NFC.Tag 1706 1707**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1708 1709**参数:** 1710 1711| 参数名 | 类型 | 必填 | 说明 | 1712| -------- | ----------------------- | ---- | -------------------------------------- | 1713| blockIndex | number | 是 | 被操作的块的索引,从0开始。 | 1714 1715**返回值:** 1716 1717| 类型 | 说明 | 1718| ------------------------- | ------------------ | 1719| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 1720 1721**错误码:** 1722 1723以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1724 1725| 错误码ID | 错误信息| 1726| ------- | -------| 1727| 201 | Permission denied. | 1728| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1729| 3100201 | The tag running state is abnormal in the service. | 1730| 3100204 | The tag I/O operation failed. | 1731 1732**示例:** 1733 1734```js 1735import { tag } from '@kit.ConnectivityKit'; 1736import { BusinessError } from '@kit.BasicServicesKit'; 1737 1738// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1739 1740function nfcTechDemo() { 1741 // 如果没有连接Tag,请先连接 1742 if (!mifareClassic.isTagConnected()) { 1743 if (!mifareClassic.connectTag()) { 1744 console.error("mifareClassic connectTag failed."); 1745 return; 1746 } 1747 } 1748 1749 try { 1750 let blockIndex = 1; // 将其更改为正确的 index 1751 mifareClassic.transferToBlock(blockIndex).then(() => { 1752 console.info("mifareClassic transferToBlock Promise success."); 1753 }).catch((err : BusinessError)=> { 1754 console.error("mifareClassic transferToBlock Promise err Code: ${err.code}, message: ${err.message}"); 1755 }); 1756 } catch (businessError) { 1757 console.error("mifareClassic transferToBlock Promise catch Code: ${(businessError as Businsess).code}, " + 1758 "message: ${(businessError as Businsess).message}"); 1759 } 1760} 1761``` 1762 1763### MifareClassicTag.transferToBlock<sup>9+</sup> 1764 1765transferToBlock(blockIndex: number, callback: AsyncCallback\<void>): void 1766 1767将临时寄存器的值转移到指定的块。使用AsyncCallback方式作为异步方法。 1768 1769**需要权限:** ohos.permission.NFC_TAG 1770 1771**系统能力:** SystemCapability.Communication.NFC.Tag 1772 1773**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1774 1775**参数:** 1776 1777| 参数名 | 类型 | 必填 | 说明 | 1778| -------- | ----------------------- | ---- | -------------------------------------- | 1779| blockIndex | number | 是 | 被操作的块的索引,从0开始。 | 1780| callback | AsyncCallback\<void> | 是 | 以callback形式异步返回块操作结果。 | 1781 1782**错误码:** 1783 1784以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1785 1786| 错误码ID | 错误信息| 1787| ------- | -------| 1788| 201 | Permission denied. | 1789| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1790| 3100201 | The tag running state is abnormal in the service. | 1791| 3100204 | The Tag I/O operation failed. | 1792 1793**示例:** 1794 1795```js 1796import { tag } from '@kit.ConnectivityKit'; 1797import { BusinessError } from '@kit.BasicServicesKit'; 1798 1799// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1800 1801function nfcTechDemo() { 1802 // 如果没有连接Tag,请先连接 1803 if (!mifareClassic.isTagConnected()) { 1804 if (!mifareClassic.connectTag()) { 1805 console.error("mifareClassic connectTag failed."); 1806 return; 1807 } 1808 } 1809 1810 try { 1811 let blockIndex = 1; // 将其更改为正确的 index 1812 mifareClassic.transferToBlock(blockIndex, (err : BusinessError)=> { 1813 if (err) { 1814 console.error("mifareClassic transferToBlock AsyncCallback errCode: ${err.code}," + 1815 "message: ${err.message}"); 1816 } else { 1817 console.info("mifareClassic transferToBlock AsyncCallback success."); 1818 } 1819 }); 1820 } catch (businessError) { 1821 console.error("mifareClassic transferToBlock AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 1822 "message: ${(businessError as Businsess).message}"); 1823 } 1824} 1825``` 1826 1827### MifareClassicTag.restoreFromBlock<sup>9+</sup> 1828 1829restoreFromBlock(blockIndex: number): Promise\<void> 1830 1831将指定块的值复制到临时寄存器。使用Promise方式作为异步方法。 1832 1833**需要权限:** ohos.permission.NFC_TAG 1834 1835**系统能力:** SystemCapability.Communication.NFC.Tag 1836 1837**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1838 1839**参数:** 1840 1841| 参数名 | 类型 | 必填 | 说明 | 1842| -------- | ----------------------- | ---- | -------------------------------------- | 1843| blockIndex | number | 是 | 被操作的块的索引,从0开始。| 1844 1845**返回值:** 1846 1847| 类型 | 说明 | 1848| ------------------------- | ------------------ | 1849| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 1850 1851**错误码:** 1852 1853以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1854 1855| 错误码ID | 错误信息| 1856| ------- | -------| 1857| 201 | Permission denied. | 1858| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1859| 3100201 | The tag running state is abnormal in the service. | 1860| 3100204 | The tag I/O operation failed. | 1861 1862**示例:** 1863 1864```js 1865import { tag } from '@kit.ConnectivityKit'; 1866import { BusinessError } from '@kit.BasicServicesKit'; 1867 1868// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1869 1870function nfcTechDemo() { 1871 // 如果没有连接Tag,请先连接 1872 if (!mifareClassic.isTagConnected()) { 1873 if (!mifareClassic.connectTag()) { 1874 console.error("mifareClassic connectTag failed."); 1875 return; 1876 } 1877 } 1878 1879 try { 1880 let blockIndex = 1; // 将其更改为正确的 index 1881 mifareClassic.restoreFromBlock(blockIndex).then(() => { 1882 console.info("mifareClassic restoreFromBlock Promise success."); 1883 }).catch((err : BusinessError)=> { 1884 console.error("mifareClassic restoreFromBlock Promise errCode: ${err.code}, message: ${err.message}"); 1885 }); 1886 } catch (businessError) { 1887 console.error("mifareClassic restoreFromBlock Promise catch businessError Code: ${(businessError as Businsess).code}," + 1888 " message: ${(businessError as Businsess).message}"); 1889 } 1890} 1891``` 1892 1893### MifareClassicTag.restoreFromBlock<sup>9+</sup> 1894 1895restoreFromBlock(blockIndex: number, callback: AsyncCallback\<void>): void 1896 1897将指定块的值复制到临时寄存器。使用AsyncCallback方式作为异步方法。 1898 1899**需要权限:** ohos.permission.NFC_TAG 1900 1901**系统能力:** SystemCapability.Communication.NFC.Tag 1902 1903**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1904 1905**参数:** 1906 1907| 参数名 | 类型 | 必填 | 说明 | 1908| -------- | ----------------------- | ---- | -------------------------------------- | 1909| blockIndex | number | 是 | 被操作的块的索引,从0开始。 | 1910| callback | AsyncCallback\<void> | 是 | 以callback形式异步返回块操作结果。| 1911 1912**错误码:** 1913 1914以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 1915 1916| 错误码ID | 错误信息| 1917| ------- | -------| 1918| 201 | Permission denied. | 1919| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 1920| 3100201 | The tag running state is abnormal in the service. | 1921| 3100204 | The Tag I/O operation failed. | 1922 1923**示例:** 1924 1925```js 1926import { tag } from '@kit.ConnectivityKit'; 1927import { BusinessError } from '@kit.BasicServicesKit'; 1928 1929// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1930 1931function nfcTechDemo() { 1932 // 如果没有连接Tag,请先连接 1933 if (!mifareClassic.isTagConnected()) { 1934 if (!mifareClassic.connectTag()) { 1935 console.error("mifareClassic connectTag failed."); 1936 return; 1937 } 1938 } 1939 1940 try { 1941 let blockIndex = 1; // 将其更改为正确的 index 1942 mifareClassic.restoreFromBlock(blockIndex, (err : BusinessError)=> { 1943 if (err) { 1944 console.error("mifareClassic restoreFromBlock AsyncCallback err Code: ${err.code}," + 1945 " message: ${err.message}"); 1946 } else { 1947 console.info("mifareClassic restoreFromBlock AsyncCallback success."); 1948 } 1949 }); 1950 } catch (businessError) { 1951 console.error("mifareClassic restoreFromBlock AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 1952 "message: ${(businessError as Businsess).message}"); 1953 } 1954} 1955``` 1956 1957### MifareClassicTag.getSectorCount<sup>9+</sup> 1958 1959getSectorCount(): number 1960 1961获取MIFARE Classic标签中的扇区数。 1962 1963**系统能力:** SystemCapability.Communication.NFC.Tag 1964 1965**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1966 1967**返回值:** 1968 1969| **类型** | **说明** | 1970| ------------------ | --------------------------| 1971| number | 标签中的扇区数量。| 1972 1973**示例:** 1974 1975```js 1976import { tag } from '@kit.ConnectivityKit'; 1977import { BusinessError } from '@kit.BasicServicesKit'; 1978 1979// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 1980let sectorCount : number = mifareClassic.getSectorCount(); 1981console.info("mifareClassic sectorCount: " + sectorCount); 1982``` 1983 1984### MifareClassicTag.getBlockCountInSector<sup>9+</sup> 1985 1986getBlockCountInSector(sectorIndex: number): number 1987 1988获取指定扇区中的块数。 1989 1990**系统能力:** SystemCapability.Communication.NFC.Tag 1991 1992**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1993 1994**参数:** 1995 1996| 参数名 | 类型 | 必填 | 说明 | 1997| -------- | ----------------------- | ---- | -------------------------------------- | 1998| sectorIndex | number | 是 | 扇区序号,从0开始。| 1999 2000**返回值:** 2001 2002| **类型** | **说明** | 2003| ------------------ | --------------------------| 2004| number | 该扇区内的块数量。| 2005 2006**错误码:** 2007 2008以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2009 2010| 错误码ID | 错误信息| 2011| ------- | -------| 2012| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2013 2014**示例:** 2015 2016```js 2017import { tag } from '@kit.ConnectivityKit'; 2018import { BusinessError } from '@kit.BasicServicesKit'; 2019 2020// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 2021 2022try { 2023 let sectorIndex = 1; // 将其更改为正确的 index 2024 let blockCnt : number = mifareClassic.getBlockCountInSector(sectorIndex); 2025 console.info("mifareClassic blockCnt: " + blockCnt); 2026} catch (businessError) { 2027 console.error("mifareClassic getBlockCountInSector catch businessError Code: ${(businessError as Businsess).code}, " + 2028 "message: ${(businessError as Businsess).message}"); 2029} 2030``` 2031 2032### MifareClassicTag.getType<sup>9+</sup> 2033 2034getType(): [tag.MifareClassicType](js-apis-nfcTag.md#mifareclassictype9) 2035 2036获取MIFARE Classic标签的类型。 2037 2038**系统能力:** SystemCapability.Communication.NFC.Tag 2039 2040**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2041 2042**返回值:** 2043 2044| **类型** | **说明** | 2045| ------------------ | --------------------------| 2046| [tag.MifareClassicType](js-apis-nfcTag.md#mifareclassictype9) | MifareClassic标签的类型。| 2047 2048**示例:** 2049 2050```js 2051import { tag } from '@kit.ConnectivityKit'; 2052 2053// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 2054let getType : tag.MifareClassicType = mifareClassic.getType(); 2055console.info("mifareClassic getType: " + getType); 2056``` 2057 2058### MifareClassicTag.getTagSize<sup>9+</sup> 2059 2060getTagSize(): number 2061 2062获取标签的存储空间大小,具体请参见[MifareClassicSize](js-apis-nfcTag.md#mifareclassicsize9)。 2063 2064**系统能力:** SystemCapability.Communication.NFC.Tag 2065 2066**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2067 2068**返回值:** 2069 2070| **类型** | **说明** | 2071| ------------------ | --------------------------| 2072| number | 标签的大小,单位为字节,请参见[MifareClassicSize](js-apis-nfcTag.md#mifareclassicsize9)。| 2073 2074**示例:** 2075 2076```js 2077import { tag } from '@kit.ConnectivityKit'; 2078import { BusinessError } from '@kit.BasicServicesKit'; 2079 2080// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 2081let tagSize : number = mifareClassic.getTagSize(); 2082console.info("mifareClassic tagSize: " + tagSize); 2083``` 2084 2085### MifareClassicTag.isEmulatedTag<sup>9+</sup> 2086 2087isEmulatedTag(): boolean 2088 2089检查标签是不是被模拟的。 2090 2091**系统能力:** SystemCapability.Communication.NFC.Tag 2092 2093**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2094 2095**返回值:** 2096 2097| **类型** | **说明** | 2098| ------------------ | --------------------------| 2099| boolean |检查结果,true: 是;false:否。 | 2100 2101**示例:** 2102 2103```js 2104import { tag } from '@kit.ConnectivityKit'; 2105import { BusinessError } from '@kit.BasicServicesKit'; 2106 2107// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 2108let isEmulatedTag : boolean = mifareClassic.isEmulatedTag(); 2109console.info("mifareClassic isEmulatedTag: " + isEmulatedTag); 2110``` 2111 2112### MifareClassicTag.getBlockIndex<sup>9+</sup> 2113 2114getBlockIndex(sectorIndex: number): number 2115 2116获取特定扇区的第一个块的序号。 2117 2118**系统能力:** SystemCapability.Communication.NFC.Tag 2119 2120**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2121 2122**参数:** 2123 2124| 参数名 | 类型 | 必填 | 说明 | 2125| -------- | ----------------------- | ---- | -------------------------------------- | 2126| sectorIndex | number | 是 | 扇区序号,从0开始。 | 2127 2128**返回值:** 2129 2130| **类型** | **说明** | 2131| ------------------ | --------------------------| 2132| number | 该扇区内的第一个块的序号,从0开始。 | 2133 2134**错误码:** 2135 2136以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2137 2138| 错误码ID | 错误信息| 2139| ------- | -------| 2140| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2141 2142**示例:** 2143 2144```js 2145import { tag } from '@kit.ConnectivityKit'; 2146import { BusinessError } from '@kit.BasicServicesKit'; 2147 2148// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 2149 2150try { 2151 let sectorIndex = 1; // 将其更改为正确的 index 2152 let blockIndex : number = mifareClassic.getBlockIndex(sectorIndex); 2153 console.info("mifareClassic blockIndex: " + blockIndex); 2154} catch (businessError) { 2155 console.error("mifareClassic getBlockIndex catch businessError Code: ${(businessError as Businsess).code}, " + 2156 "message: ${(businessError as Businsess).message}"); 2157} 2158``` 2159 2160### MifareClassicTag.getSectorIndex<sup>9+</sup> 2161 2162getSectorIndex(blockIndex: number): number 2163 2164获取包含指定块号的扇区序号。 2165 2166**系统能力:** SystemCapability.Communication.NFC.Tag 2167 2168**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2169 2170**参数:** 2171 2172| 参数名 | 类型 | 必填 | 说明 | 2173| -------- | ----------------------- | ---- | -------------------------------------- | 2174| blockIndex | number | 是 | 块序号,从0开始。 | 2175 2176**返回值:** 2177 2178| **类型** | **说明** | 2179| ------------------ | --------------------------| 2180| number | 扇区序号,从0开始。 | 2181 2182**错误码:** 2183 2184以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2185 2186| 错误码ID | 错误信息| 2187| ------- | -------| 2188| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2189 2190**示例:** 2191 2192```js 2193import { tag } from '@kit.ConnectivityKit'; 2194import { BusinessError } from '@kit.BasicServicesKit'; 2195 2196// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareClassic 2197 2198try { 2199 let blockIndex = 1; // 将其更改为正确的 index 2200 let sectorIndex : number = mifareClassic.getSectorIndex(blockIndex); 2201 console.info("mifareClassic sectorIndex: " + sectorIndex); 2202} catch (businessError) { 2203 console.error("mifareClassic getSectorIndex catch businessError Code: ${(businessError as Businsess).code}, " + 2204 "message: ${(businessError as Businsess).message}"); 2205} 2206``` 2207 2208## MifareUltralightTag<sup>9+</sup> 2209 2210MifareUltralightTag 提供对MIFARE Ultralight属性和I/O操作的访问,继承自TagSession。 2211 2212TagSession是所有NFC Tag技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 2213 2214MifareUltralightTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 2215 2216以下是MifareUltralightTag的独有接口。 2217 2218### MifareUltralightTag.readMultiplePages<sup>9+</sup> 2219 2220readMultiplePages(pageIndex: number): Promise\<number[]> 2221 2222读取标签的4页数据,共16字节的数据。每个页面数据大小为4字节。使用Promise方式作为异步方法。 2223 2224**需要权限:** ohos.permission.NFC_TAG 2225 2226**系统能力:** SystemCapability.Communication.NFC.Tag 2227 2228**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2229 2230**参数:** 2231 2232| 参数名 | 类型 | 必填 | 说明 | 2233| -------- | ----------------------- | ---- | ------------------------------ | 2234| pageIndex | number | 是 | 要读取页面的索引,从0开始。 | 2235 2236**返回值:** 2237 2238| **类型** | **说明** | 2239| ------------------ | --------------------------| 2240| Promise\<number[]> | 以Promise形式返回读取的4页的数据,共16字节。 | 2241 2242**错误码:** 2243 2244以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2245 2246| 错误码ID | 错误信息| 2247| ------- | -------| 2248| 201 | Permission denied. | 2249| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2250| 3100201 | The tag running state is abnormal in the service. | 2251| 3100204 | The tag I/O operation failed. | 2252 2253**示例:** 2254 2255```js 2256 2257import { tag } from '@kit.ConnectivityKit'; 2258import { BusinessError } from '@kit.BasicServicesKit'; 2259 2260// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareUltralight 2261 2262function nfcTechDemo() { 2263 // 如果没有连接Tag,请先连接 2264 if (!mifareUltralight.isTagConnected()) { 2265 if (!mifareUltralight.connectTag()) { 2266 console.error("mifareUltralight connectTag failed."); 2267 return; 2268 } 2269 } 2270 2271 try { 2272 let pageIndex = 1; // 将其更改为正确的 index 2273 mifareUltralight.readMultiplePages(pageIndex).then((data : number[]) => { 2274 console.info("mifareUltralight readMultiplePages Promise data = " + data); 2275 }).catch((err : BusinessError)=> { 2276 console.error("mifareUltralight readMultiplePages Promise Code: ${err.code}, message: ${err.message}"); 2277 }); 2278 } catch (businessError) { 2279 console.error("mifareUltralight readMultiplePages Promise catch businessError" + 2280 " Code: ${(businessError as Businsess).code}, message: ${(businessError as Businsess).message}"); 2281 } 2282} 2283``` 2284 2285### MifareUltralightTag.readMultiplePages<sup>9+</sup> 2286 2287readMultiplePages(pageIndex: number, callback: AsyncCallback\<number[]>): void 2288 2289读取标签的4页数据,共16字节的数据。每个页面数据大小为4字节。使用AsyncCallback方式作为异步方法。 2290 2291**需要权限:** ohos.permission.NFC_TAG 2292 2293**系统能力:** SystemCapability.Communication.NFC.Tag 2294 2295**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2296 2297**参数:** 2298 2299| 参数名 | 类型 | 必填 | 说明 | 2300| -------- | ----------------------- | ---- | -------------------------------------- | 2301| pageIndex | number | 是 | 要读取页面的索引,从0开始。 | 2302| callback | AsyncCallback\<number[]> | 是 | 以callback形式异步返回页操作结果。返回读取到的数据,共16字节。 | 2303 2304**错误码:** 2305 2306以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2307 2308| 错误码ID | 错误信息| 2309| ------- | -------| 2310| 201 | Permission denied. | 2311| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2312| 3100201 | The tag running state is abnormal in the service. | 2313| 3100204 | The Tag I/O operation failed. | 2314 2315**示例:** 2316 2317```js 2318import { tag } from '@kit.ConnectivityKit'; 2319import { BusinessError } from '@kit.BasicServicesKit'; 2320 2321// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareUltralight 2322 2323function nfcTechDemo() { 2324 // 如果没有连接Tag,请先连接 2325 if (!mifareUltralight.isTagConnected()) { 2326 if (!mifareUltralight.connectTag()) { 2327 console.error("mifareUltralight connectTag failed."); 2328 return; 2329 } 2330 } 2331 2332 try { 2333 let pageIndex = 1; // 将其更改为正确的 index 2334 mifareUltralight.readMultiplePages(pageIndex, (err : BusinessError, data : number[])=> { 2335 if (err) { 2336 console.log("mifareUltralight readMultiplePages AsyncCallback Code: ${err.code}, message: ${err.message}"); 2337 } else { 2338 console.info("mifareUltralight readMultiplePages AsyncCallback data: " + data); 2339 } 2340 }); 2341 } catch (businessError) { 2342 console.error("mifareUltralight readMultiplePages AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 2343 "message: ${(businessError as Businsess).message}"); 2344 } 2345} 2346``` 2347 2348### MifareUltralightTag.writeSinglePage<sup>9+</sup> 2349 2350writeSinglePage(pageIndex: number, data: number[]): Promise\<void> 2351 2352写入一页数据,数据大小为4字节。使用Promise方式作为异步方法。 2353 2354**需要权限:** ohos.permission.NFC_TAG 2355 2356**系统能力:** SystemCapability.Communication.NFC.Tag 2357 2358**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2359 2360**参数:** 2361 2362| 参数名 | 类型 | 必填 | 说明 | 2363| -------- | ----------------------- | ---- | -------------------------------------- | 2364| pageIndex | number | 是 | 要写入页面的索引,从0开始。 | 2365| data | number[] | 是 | 要写入页面的数据内容,必须是4个字节大小。 | 2366 2367**返回值:** 2368 2369| 类型 | 说明 | 2370| ------------------------- | ------------------ | 2371| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 2372 2373**错误码:** 2374 2375以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2376 2377| 错误码ID | 错误信息| 2378| ------- | -------| 2379| 201 | Permission denied. | 2380| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2381| 3100201 | The tag running state is abnormal in the service. | 2382| 3100204 | The tag I/O operation failed. | 2383 2384**示例:** 2385 2386```js 2387import { tag } from '@kit.ConnectivityKit'; 2388import { BusinessError } from '@kit.BasicServicesKit'; 2389 2390// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareUltralight 2391 2392function nfcTechDemo() { 2393 // 如果没有连接Tag,请先连接 2394 if (!mifareUltralight.isTagConnected()) { 2395 if (!mifareUltralight.connectTag()) { 2396 console.error("mifareUltralight connectTag failed."); 2397 return; 2398 } 2399 } 2400 2401 try { 2402 let pageIndex = 1; // 将其更改为正确的 index 2403 let rawData = [0x01, 0x02, 0x03, 0x04]; //必须是4个字节,将其更改为正确的data 2404 mifareUltralight.writeSinglePage(pageIndex, rawData).then(() => { 2405 console.info("mifareUltralight writeSinglePage Promise success."); 2406 }).catch((err : BusinessError)=> { 2407 console.error("mifareUltralight writeSinglePage Promise err Code: ${err.code}, message: ${err.message}"); 2408 }); 2409 } catch (businessError) { 2410 console.error("mifareUltralight writeSinglePage Promise catch Code: ${(businessError as Businsess).code}, " + 2411 "message: ${(businessError as Businsess).message}"); 2412 } 2413} 2414``` 2415 2416### MifareUltralightTag.writeSinglePage<sup>9+</sup> 2417 2418writeSinglePage(pageIndex: number, data: number[], callback: AsyncCallback\<void>): void 2419 2420写入一页数据,数据大小为4字节。使用AsyncCallback方式作为异步方法。 2421 2422**需要权限:** ohos.permission.NFC_TAG 2423 2424**系统能力:** SystemCapability.Communication.NFC.Tag 2425 2426**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2427 2428**参数:** 2429 2430| 参数名 | 类型 | 必填 | 说明 | 2431| -------- | ----------------------- | ---- | ------------------------ | 2432| pageIndex | number | 是 | 要写入页面的索引,从0开始。 | 2433| data | number[] | 是 | 要写入页面的数据内容,必须是4个字节大小。 | 2434| callback|AsyncCallback\<void> |是| 以callback形式异步返回页操作结果。 | 2435 2436**错误码:** 2437 2438以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2439 2440| 错误码ID | 错误信息| 2441| ------- | -------| 2442| 201 | Permission denied. | 2443| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2444| 3100201 | The tag running state is abnormal in the service. | 2445| 3100204 | The Tag I/O operation failed. | 2446 2447**示例:** 2448 2449```js 2450import { tag } from '@kit.ConnectivityKit'; 2451import { BusinessError } from '@kit.BasicServicesKit'; 2452 2453// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareUltralight 2454 2455function nfcTechDemo() { 2456 // 如果没有连接Tag,请先连接 2457 if (!mifareUltralight.isTagConnected()) { 2458 if (!mifareUltralight.connectTag()) { 2459 console.error("mifareUltralight connectTag failed."); 2460 return; 2461 } 2462 } 2463 2464 try { 2465 let pageIndex = 1; // 将其更改为正确的 index 2466 let rawData = [0x01, 0x02, 0x03, 0x04]; //必须是4个字节,将其更改为正确的data 2467 mifareUltralight.writeSinglePage(pageIndex, rawData, (err : BusinessError)=> { 2468 if (err) { 2469 console.error("mifareUltralight writeSinglePage AsyncCallback Code: ${err.code}," + 2470 "message: ${err.message}"); 2471 } else { 2472 console.info("mifareUltralight writeSinglePage AsyncCallback success."); 2473 } 2474 }); 2475 } catch (businessError) { 2476 console.error("mifareUltralight writeSinglePage AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 2477 "message: ${(businessError as Businsess).message}"); 2478 } 2479} 2480``` 2481 2482### MifareUltralightTag.getType<sup>9+</sup> 2483 2484getType(): [tag.MifareUltralightType](js-apis-nfcTag.md#mifareultralighttype9) 2485 2486获取MIFARE Ultralight标签的类型。 2487 2488**系统能力:** SystemCapability.Communication.NFC.Tag 2489 2490**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2491 2492**返回值:** 2493 2494| **类型** | **说明** | 2495| ------------------ | --------------------------| 2496| [tag.MifareUltralightType](js-apis-nfcTag.md#mifareultralighttype9) | MIFARE Ultralight标签的类型。| 2497 2498**示例:** 2499 2500```js 2501import { tag } from '@kit.ConnectivityKit'; 2502 2503// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 mifareUltralight 2504let getType : tag.MifareUltralightType = mifareClassic.getType(); 2505console.info("mifareUltralight getType: " + getType); 2506``` 2507 2508## NdefFormatableTag<sup>9+</sup> 2509 2510NdefFormatableTag为NDEF Formattable的标签提供格式化操作,继承自TagSession。 2511 2512TagSession是所有NFC Tag 技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 2513 2514NdefFormatableTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 2515 2516以下是NdefFormatableTag的独有接口。 2517 2518### NdefFormatableTag.format<sup>9+</sup> 2519 2520format(message: [NdefMessage](#ndefmessage9)): Promise\<void> 2521 2522将标签格式化为NDEF标签,将NDEF消息写入NDEF标签。使用Promise方式作为异步方法。 2523 2524**需要权限:** ohos.permission.NFC_TAG 2525 2526**系统能力:** SystemCapability.Communication.NFC.Tag 2527 2528**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2529 2530**参数:** 2531 2532| 参数名 | 类型 | 必填 | 说明 | 2533| -------- | ----------------------- | ---- | -------------------------------------- | 2534| message | [NdefMessage](#ndefmessage9) | 是 | 格式化成功时要写入的NDEF消息。可以为null,为null时仅格式化标签,不写入内容。 | 2535 2536**返回值:** 2537 2538| 类型 | 说明 | 2539| ------------------------- | ------------------ | 2540| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 2541 2542**错误码:** 2543 2544以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2545 2546| 错误码ID | 错误信息| 2547| ------- | -------| 2548| 201 | Permission denied. | 2549| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2550| 3100201 | The tag running state is abnormal in the service. | 2551| 3100204 | The tag I/O operation failed. | 2552 2553**示例:** 2554 2555```js 2556import { tag } from '@kit.ConnectivityKit'; 2557import { BusinessError } from '@kit.BasicServicesKit'; 2558 2559// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefFormatable 2560 2561function nfcTechDemo() { 2562 // 如果没有连接Tag,请先连接 2563 if (!ndefFormatable.isTagConnected()) { 2564 if (!ndefFormatable.connectTag()) { 2565 console.error("ndefFormatable connectTag failed."); 2566 return; 2567 } 2568 } 2569 2570 try { 2571 //从原始数据创建的ndefMessage,例如: 2572 let ndefMessage = tag.ndef.createNdefMessage([0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]); 2573 // 必须是可以被解析的NDEF记录 2574 //或从 tag.ndef.createNdefMessage(ndefRecords:NdefRecord[]) 创建 ndefMessage 2575 2576 ndefFormatable.format(ndefMessage).then(() => { 2577 console.info("ndefFormatable format Promise success."); 2578 }).catch((err : BusinessError)=> { 2579 console.error("ndefFormatable format Promise err Code: ${err.code}, message: ${err.message}"); 2580 }); 2581 } catch (businessError) { 2582 console.error("ndefFormatable format Promise catch businessError Code: ${(businessError as Businsess).code}, " + 2583 "message: ${(businessError as Businsess).message}"); 2584 } 2585} 2586``` 2587 2588### NdefFormatableTag.format<sup>9+</sup> 2589 2590format(message: [NdefMessage](#ndefmessage9), callback: AsyncCallback\<void>): void 2591 2592将标签格式化为NDEF标签,然后将NDEF消息写入NDEF标签。使用AsyncCallback方式作为异步方法。 2593 2594**需要权限:** ohos.permission.NFC_TAG 2595 2596**系统能力:** SystemCapability.Communication.NFC.Tag 2597 2598**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2599 2600**参数:** 2601 2602| 参数名 | 类型 | 必填 | 说明 | 2603| -------- | ----------------------- | ---- | -------------------------------------- | 2604| message | [NdefMessage](#ndefmessage9) | 是 | 格式化成功时要写入的Ndef消息。可以为null,为null时仅格式化标签,不写入内容。 | 2605 2606**返回值:** 2607 2608| **类型** | **说明** | 2609| ------------------ | --------------------------| 2610| callback: AsyncCallback\<void> | 以callback形式异步返回格式化操作结果。 | 2611 2612**错误码:** 2613 2614以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2615 2616| 错误码ID | 错误信息| 2617| ------- | -------| 2618| 201 | Permission denied. | 2619| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2620| 3100201 | The tag running state is abnormal in the service. | 2621| 3100204 | The Tag I/O operation failed. | 2622 2623**示例:** 2624 2625```js 2626import { tag } from '@kit.ConnectivityKit'; 2627import { BusinessError } from '@kit.BasicServicesKit'; 2628 2629// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefFormatable 2630 2631function nfcTechDemo() { 2632 // 如果没有连接Tag,请先连接 2633 if (!ndefFormatable.isTagConnected()) { 2634 if (!ndefFormatable.connectTag()) { 2635 console.error("ndefFormatable connectTag failed."); 2636 return; 2637 } 2638 } 2639 2640 try { 2641 //从原始数据创建的ndefMessage,例如: 2642 let ndefMessage = tag.ndef.createNdefMessage([0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]); // 必须是可以被解析的NDEF记录 2643 //或从 tag.ndef.createNdefMessage(ndefRecords:NdefRecord[]) 创建 ndefMessage 2644 2645 ndefFormatable.format(ndefMessage, (err : BusinessError)=> { 2646 if (err) { 2647 console.error("ndefFormatable format AsyncCallback Code: ${err.code}, message: ${err.message}"); 2648 } else { 2649 console.info("ndefFormatable format AsyncCallback success."); 2650 } 2651 }); 2652 } catch (businessError) { 2653 console.error("ndefFormatable format AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 2654 "message: ${(businessError as Businsess).message}"); 2655 } 2656} 2657``` 2658 2659### NdefFormatableTag.formatReadOnly<sup>9+</sup> 2660 2661formatReadOnly(message: [NdefMessage](#ndefmessage9)): Promise\<void> 2662 2663将标签格式化为NDEF标签,将NDEF消息写入NDEF标签,之后将标签设置为只读。使用Promise方式作为异步方法。 2664 2665**需要权限:** ohos.permission.NFC_TAG 2666 2667**系统能力:** SystemCapability.Communication.NFC.Tag 2668 2669**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2670 2671**参数:** 2672 2673| 参数名 | 类型 | 必填 | 说明 | 2674| -------- | ----------------------- | ---- | -------------------------------------- | 2675| message | [NdefMessage](#ndefmessage9) | 是 | 格式化成功时要写入的NDEF消息。可以为null,为null时仅格式化标签,不写入内容。 | 2676 2677**返回值:** 2678 2679| 类型 | 说明 | 2680| ------------------------- | ------------------ | 2681| Promise\<void> | Promise对象。无返回结果的Promise对象。 | 2682 2683**错误码:** 2684 2685以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2686 2687| 错误码ID | 错误信息| 2688| ------- | -------| 2689| 201 | Permission denied. | 2690| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2691| 3100201 | The tag running state is abnormal in the service. | 2692| 3100204 | The tag I/O operation failed. | 2693 2694**示例:** 2695 2696```js 2697import { tag } from '@kit.ConnectivityKit'; 2698import { BusinessError } from '@kit.BasicServicesKit'; 2699 2700// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefFormatable 2701 2702function nfcTechDemo() { 2703 // 如果没有连接Tag,请先连接 2704 if (!ndefFormatable.isTagConnected()) { 2705 if (!ndefFormatable.connectTag()) { 2706 console.error("ndefFormatable connectTag failed."); 2707 return; 2708 } 2709 } 2710 2711 try { 2712 //从原始数据创建的ndefMessage,例如: 2713 let ndefMessage = tag.ndef.createNdefMessage([0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]); 2714 // 必须是可以被解析的NDEF记录 2715 //或从 tag.ndef.createNdefMessage(ndefRecords:NdefRecord[]) 创建 ndefMessage 2716 2717 ndefFormatable.formatReadOnly(ndefMessage).then(() => { 2718 console.info("ndefFormatable formatReadOnly Promise success."); 2719 }).catch((err : BusinessError)=> { 2720 console.error("ndefFormatable formatReadOnly Promise Code: ${err.code}, message: ${err.message}"); 2721 }); 2722 } catch (businessError) { 2723 console.error("ndefFormatable formatReadOnly Promise catch Code: ${(businessError as Businsess).code}, " + 2724 "message: ${(businessError as Businsess).message}"); 2725 } 2726} 2727``` 2728 2729### NdefFormatableTag.formatReadOnly<sup>9+</sup> 2730 2731formatReadOnly(message: [NdefMessage](#ndefmessage9), callback: AsyncCallback\<void>): void 2732 2733将标签格式化为NDEF标签,然后将NDEF消息写入NDEF标签,之后将标签设置为只读。使用callback方式作为异步方法。 2734 2735**需要权限:** ohos.permission.NFC_TAG 2736 2737**系统能力:** SystemCapability.Communication.NFC.Tag 2738 2739**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 2740 2741**参数:** 2742 2743| 参数名 | 类型 | 必填 | 说明 | 2744| -------- | ----------------------- | ---- | -------------------------------------- | 2745| message | [NdefMessage](#ndefmessage9) | 是 | 格式化成功时要写入的NDEF消息。可以为null,为null时仅格式化标签,不写入内容。| 2746 2747**返回值:** 2748 2749| **类型** | **说明** | 2750| ------------------ | --------------------------| 2751| callback: AsyncCallback\<void> | 以callback形式异步返回格式化操作结果。 | 2752 2753**错误码:** 2754 2755以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2756 2757| 错误码ID | 错误信息| 2758| ------- | -------| 2759| 201 | Permission denied. | 2760| 401 | The parameter check failed. Possible causes: <br>1. Mandatory parameters are left unspecified.<br>2. Incorrect parameters types.<br>3. Parameter verification failed. | 2761| 3100201 | The tag running state is abnormal in the service. | 2762| 3100204 | The Tag I/O operation failed. | 2763 2764**示例:** 2765 2766```js 2767import { tag } from '@kit.ConnectivityKit'; 2768import { BusinessError } from '@kit.BasicServicesKit'; 2769 2770// 参考 @ohos.nfc.tag(标准NFC-Tag)中 tag.TagInfo 接口,获取正确的 ndefFormatable 2771 2772function nfcTechDemo() { 2773 // 如果没有连接Tag,请先连接 2774 if (!ndefFormatable.isTagConnected()) { 2775 if (!ndefFormatable.connectTag()) { 2776 console.error("ndefFormatable connectTag failed."); 2777 return; 2778 } 2779 } 2780 2781 try { 2782 //从原始数据创建的ndefMessage,例如: 2783 let ndefMessage = tag.ndef.createNdefMessage([0xD1, 0x01, 0x03, 0x54, 0x4E, 0x46, 0x43]); 2784 //必须是可以被解析的NDEF记录 2785 //或从 tag.ndef.createNdefMessage(ndefRecords:NdefRecord[]) 创建 ndefMessage 2786 2787 ndefFormatable.formatReadOnly(ndefMessage, (err : BusinessError)=> { 2788 if (err) { 2789 console.error("ndefFormatable formatReadOnly AsyncCallback err Code: ${err.code}, message: ${err.message}"); 2790 } else { 2791 console.info("ndefFormatable formatReadOnly AsyncCallback success."); 2792 } 2793 }); 2794 } catch (businessError) { 2795 console.error("ndefFormatable formatReadOnly AsyncCallback catch Code: ${(businessError as Businsess).code}, " + 2796 "message: ${(businessError as Businsess).message}"); 2797 } 2798} 2799``` 2800 2801## BarcodeTag<sup>18+</sup> 2802 2803BarcodeTag提供读取条形码标签的属性和访问I/O操作的能力,继承自TagSession。 2804 2805TagSession是所有NFC Tag 技术类型的基类, 提供建立连接和发送数据等共同接口。具体请参见[TagSession](js-apis-tagSession.md)。 2806 2807BarcodeTag获取方式请参考[nfc-tag开发指南](../../connectivity/nfc/nfc-tag-access-guide.md)。 2808 2809以下是BarcodeTag的独有接口。 2810 2811### BarcodeTag.getBarcode<sup>18+</sup> 2812 2813getBarcode(): Promise\<ArrayBuffer> 2814 2815获取读到的Barcode类型的完整Tag。使用Promise方式作为异步方法。 2816 2817**需要权限:** ohos.permission.NFC_TAG 2818 2819**系统能力:** SystemCapability.Communication.NFC.Tag 2820 2821**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 2822 2823 2824**返回值:** 2825 2826| 类型 | 说明 | 2827| ------------------------- | ------------------ | 2828| Promise\<ArrayBuffer> | Promise对象。返回BarCode类型的 tag。 | 2829 2830**错误码:** 2831 2832以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。 2833 2834| 错误码ID | 错误信息| 2835| ------- | -------| 2836| 201 | Permission denied. | 2837| 3100201 | The tag running state is abnormal in the service. | 2838| 3100204 | The tag I/O operation failed. | 2839