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