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