• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;boolean&gt;
298
299检查是否支持扩展的APDU,使用Promise方式作为异步方法。
300
301**需要权限:** ohos.permission.NFC_TAG
302
303**系统能力:** SystemCapability.Communication.NFC.Tag
304
305**返回值:**
306
307| **类型** | **说明**                             |
308| ------------------ | --------------------------|
309| Promise&lt;boolean&gt; | 检查结果,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