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