1# @ohos.nfc.controller (标准NFC)
2
3本模块主要用于管理NFC状态,包括打开和关闭NFC,读取NFC的状态等。
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## **导入模块**
10
11```js
12import { nfcController } from '@kit.ConnectivityKit';
13```
14
15## NfcState
16
17定义不同的NFC状态值。
18
19**系统能力:** SystemCapability.Communication.NFC.Core
20
21**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
22
23| 名称 | 值 | 说明 |
24| -------- | -------- | -------- |
25| STATE_OFF | 1 | NFC已关闭状态。 |
26| STATE_TURNING_ON | 2 | NFC正在打开状态。 |
27| STATE_ON | 3      | NFC已打开状态。 |
28| STATE_TURNING_OFF | 4      | NFC正在关闭状态。 |
29
30## nfcController.isNfcAvailable<sup>(deprecated)</sup>
31
32isNfcAvailable(): boolean
33
34查询设备是否有NFC能力。
35
36> **说明:**
37> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用[canIUse("SystemCapability.Communication.NFC.Core")](../common/init.md#caniuse)替代。
38
39**系统能力:** SystemCapability.Communication.NFC.Core
40
41**返回值:**
42
43| **类型** | **说明** |
44| -------- | -------- |
45| boolean | true: 设备具备NFC能力,&nbsp;false: 设备不具备NFC能力。 |
46
47
48## nfcController.openNfc<sup>(deprecated)</sup>
49
50openNfc(): boolean
51
52打开NFC开关。
53
54> **说明:**
55> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用[enableNfc](#nfccontrollerenablenfc9)替代。
56
57**需要权限:** ohos.permission.MANAGE_SECURE_SETTINGS(该权限仅系统应用可申请)
58
59**系统能力:** SystemCapability.Communication.NFC.Core
60
61**返回值:**
62
63| **类型** | **说明** |
64| -------- | -------- |
65| boolean | true: 打开NFC成功,&nbsp;false: 打开NFC失败。 |
66
67## nfcController.enableNfc<sup>9+</sup>
68
69enableNfc(): void
70
71打开NFC开关,该接口只能被系统应用调用。
72
73**需要权限:** ohos.permission.MANAGE_SECURE_SETTINGS(该权限仅系统应用可申请)
74
75**系统能力:** SystemCapability.Communication.NFC.Core
76
77**错误码:**
78
79以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。
80
81| 错误码ID | 错误信息|
82| ------- | -------|
83|201 | Permission denied.                 |
84|801 | Capability not supported.          |
85| 3100101 | NFC state is abnormal in service. |
86
87## nfcController.closeNfc<sup>(deprecated)</sup>
88
89closeNfc(): boolean
90
91关闭NFC开关。
92
93> **说明:**
94> 从 API version 7 开始支持,从 API version 9 开始废弃,建议使用[disableNfc](#nfccontrollerdisablenfc9)替代。
95
96**需要权限:** ohos.permission.MANAGE_SECURE_SETTINGS(该权限仅系统应用可申请)
97
98**系统能力:** SystemCapability.Communication.NFC.Core
99
100**返回值:**
101
102| **类型** | **说明**                                    |
103| -------- | ------------------------------------------- |
104| boolean  | true: 关闭NFC成功,&nbsp;false: 关闭NFC失败。 |
105
106## nfcController.disableNfc<sup>9+</sup>
107
108disableNfc(): void
109
110关闭NFC开关,该接口只能被系统应用调用。
111
112**需要权限:** ohos.permission.MANAGE_SECURE_SETTINGS(该权限仅系统应用可申请)
113
114**系统能力:** SystemCapability.Communication.NFC.Core
115
116**错误码:**
117
118以下错误码的详细介绍请参见[NFC错误码](errorcode-nfc.md)。
119
120| 错误码ID | 错误信息|
121| ------- | -------|
122|201 | Permission denied.                 |
123|801 | Capability not supported.          |
124| 3100101 | NFC state is abnormal in service. |
125
126## nfcController.isNfcOpen
127
128isNfcOpen(): boolean
129
130查询NFC是否打开。
131
132**系统能力:** SystemCapability.Communication.NFC.Core
133
134**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
135
136**返回值:**
137
138| **类型** | **说明**                            |
139| -------- | ----------------------------------- |
140| boolean  | true: NFC是打开的,&nbsp;false: NFC是关闭的。 |
141
142## nfcController.getNfcState
143
144getNfcState(): [NfcState](#nfcstate)
145
146查询NFC状态。
147
148**系统能力:** SystemCapability.Communication.NFC.Core
149
150**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
151
152**返回值:**
153
154| **类型** | **说明**               |
155| -------- | ---------------------- |
156| [NfcState](#nfcstate) | NFC状态值,详细请见[NfcState](#nfcstate)枚举值。 |
157
158## nfcController.on('nfcStateChange')
159
160on(type: 'nfcStateChange', callback: Callback&lt;[NfcState](#nfcstate)&gt;): void
161
162注册NFC开关状态事件,通过Callback方式获取NFC状态的变化通知。
163
164**系统能力:** SystemCapability.Communication.NFC.Core
165
166**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
167
168**参数**
169
170| **参数名** | **类型** | **必填** | **说明** |
171| -------- | -------- | -------- | -------- |
172| type | string | 是 | 固定填"nfcStateChange"字符串。 |
173| callback | Callback&lt;[NfcState](#nfcstate)&gt; | 是 | NFC状态改变通知的回调函数。 |
174
175## nfcController.off('nfcStateChange')
176
177off(type: 'nfcStateChange', callback?: Callback&lt;[NfcState](#nfcstate)&gt;): void
178
179取消NFC开关状态事件的注册,取消后NFC状态变化时,就不会再收到Callback的通知。
180
181**系统能力:** SystemCapability.Communication.NFC.Core
182
183**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
184
185**参数**
186
187| **参数名** | **类型** | **必填** | **说明** |
188| -------- | -------- | -------- | -------- |
189| type | string | 是 | 固定填"nfcStateChange"字符串。 |
190| callback | Callback&lt;[NfcState](#nfcstate)&gt; | 否 | NFC状态改变回调函数,可以空缺不填。如果callback不填,将取消注册该事件关联的所有回调函数 |
191
192**示例**
193
194```js
195import { nfcController } from '@kit.ConnectivityKit';
196
197// register callback to receive the nfc state changed notification
198nfcController.on("nfcStateChange", (nfcState : number)=> {
199  console.log("nfcController on callback nfcState: " + nfcState);
200});
201
202// open nfc, require permission: ohos.permission.MANAGE_SECURE_SETTINGS(This permission can only be requested by system apps.)
203if (!nfcController.isNfcOpen()) {
204  // from api9, use 'enableNfc' to open nfc.
205  try {
206    nfcController.enableNfc();
207    console.log("nfcController enableNfc success");
208  } catch (businessError) {
209    console.error("nfcController enableNfc businessError: " + businessError);
210  }
211} else {
212  console.log("nfcController NFC has been opened");
213}
214
215// close nfc, require permission: ohos.permission.MANAGE_SECURE_SETTINGS(This permission can only be requested by system apps.)
216if (nfcController.isNfcOpen()) {
217  // from api9, use 'disableNfc' to close nfc.
218  try {
219    nfcController.disableNfc();
220    console.log("nfcController disableNfc success");
221  } catch (businessError) {
222    console.error("nfcController disableNfc businessError: " + businessError);
223  }
224} else {
225  console.log("nfcController NFC has been closed");
226}
227
228// unregister callback
229nfcController.off("nfcStateChange");
230```
231