1# @ohos.wifiManager (WLAN) 2该模块主要提供WLAN基础功能、P2P(peer-to-peer)功能和WLAN消息通知的相应服务,让应用可以通过WLAN和其他设备互联互通。 3 4> **说明:** 5> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 6 7 8## 导入模块 9 10```ts 11import wifiManager from '@ohos.wifiManager'; 12``` 13 14 15## wifiManager.isWifiActive<sup>9+</sup> 16 17isWifiActive(): boolean 18 19查询WLAN是否已使能。 20 21**需要权限:** ohos.permission.GET_WIFI_INFO 22 23**系统能力:** SystemCapability.Communication.WiFi.STA 24 25**返回值:** 26 27 | **类型** | **说明** | 28 | -------- | -------- | 29 | boolean | true:已使能, false:未使能。 | 30 31**错误码:** 32 33以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 34 35| **错误码ID** | **错误信息** | 36 | -------- | -------- | 37| 2501000 | Operation failed.| 38 39**示例:** 40 41```ts 42 import wifiManager from '@ohos.wifiManager'; 43 44 try { 45 let isWifiActive = wifiManager.isWifiActive(); 46 console.info("isWifiActive:" + isWifiActive); 47 }catch(error){ 48 console.error("failed:" + JSON.stringify(error)); 49 } 50``` 51 52## wifiManager.scan<sup>9+</sup><sup>(deprecated)</sup> 53 54scan(): void 55 56启动WLAN扫描。 57 58> **说明:** 59> 从 API version 9开始支持,从API version 10开始废弃。替代接口仅向系统应用开放。 60 61**需要权限:** ohos.permission.SET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 62 63**系统能力:** SystemCapability.Communication.WiFi.STA 64 65**错误码:** 66 67以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 68 69| **错误码ID** | **错误信息** | 70 | -------- | -------- | 71| 2501000 | Operation failed.| 72 73**示例:** 74 75```ts 76 import wifiManager from '@ohos.wifiManager'; 77 78 try { 79 wifiManager.scan(); 80 }catch(error){ 81 console.error("failed:" + JSON.stringify(error)); 82 } 83``` 84 85 86## wifiManager.getScanResults<sup>9+</sup><sup>(deprecated)</sup> 87 88getScanResults(): Promise<Array<WifiScanInfo>> 89 90获取扫描结果,使用Promise异步回调。 91 92> **说明:** 93> 从 API version 9开始支持,从API version 10开始废弃。建议使用[wifiManager.getScanInfoList](#wifimanagergetscaninfolist10)代替。 94 95**需要权限:** ohos.permission.GET_WIFI_INFO 和 (ohos.permission.GET_WIFI_PEERS_MAC 或(ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION)) 96 97**系统能力:** SystemCapability.Communication.WiFi.STA 98 99**返回值:** 100 101| **类型** | **说明** | 102| -------- | -------- | 103| Promise< Array<[WifiScanInfo](#wifiscaninfo9)> > | Promise对象。返回扫描到的热点列表。 | 104 105**错误码:** 106 107以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 108 109| **错误码ID** | **错误信息** | 110| -------- | -------- | 111| 2501000 | Operation failed.| 112 113## wifiManager.getScanResults<sup>9+</sup><sup>(deprecated)</sup> 114 115getScanResults(callback: AsyncCallback<Array<WifiScanInfo>>): void 116 117获取扫描结果,使用callback异步回调。 118 119> **说明:** 120> 从 API version 9开始支持,从API version 10开始废弃。建议使用[wifiManager.getScanInfoList](#wifimanagergetscaninfolist10)代替。 121 122**需要权限:** ohos.permission.GET_WIFI_INFO 和 (ohos.permission.GET_WIFI_PEERS_MAC 或 (ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION)) 123 124**系统能力:** SystemCapability.Communication.WiFi.STA 125 126**参数:** 127| **参数名** | **类型** | **必填** | **说明** | 128| -------- | -------- | -------- | -------- | 129| callback | AsyncCallback< Array<[WifiScanInfo](#wifiscaninfo9)>> | 是 | 回调函数。当成功时,err为0,data为扫描到的热点;否则err为非0值,data为空。 | 130 | Array<[WifiScanInfo](#wifiscaninfo9)> | 返回扫描到的热点列表。 | 131 132**错误码:** 133 134以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 135 136| **错误码ID** | **错误信息** | 137| -------- | -------- | 138| 2501000 | Operation failed.| 139 140**示例:** 141```ts 142 import wifiManager from '@ohos.wifiManager'; 143 144 wifiManager.getScanResults((err, result) => { 145 if (err) { 146 console.error("get scan info error"); 147 return; 148 } 149 150 let len = result.length; 151 console.log("wifi received scan info: " + len); 152 for (let i = 0; i < len; ++i) { 153 console.info("ssid: " + result[i].ssid); 154 console.info("bssid: " + result[i].bssid); 155 console.info("capabilities: " + result[i].capabilities); 156 console.info("securityType: " + result[i].securityType); 157 console.info("rssi: " + result[i].rssi); 158 console.info("band: " + result[i].band); 159 console.info("frequency: " + result[i].frequency); 160 console.info("channelWidth: " + result[i].channelWidth); 161 console.info("timestamp: " + result[i].timestamp); 162 } 163 }); 164 165 wifiManager.getScanResults().then(result => { 166 let len = result.length; 167 console.log("wifi received scan info: " + len); 168 for (let i = 0; i < len; ++i) { 169 console.info("ssid: " + result[i].ssid); 170 console.info("bssid: " + result[i].bssid); 171 console.info("capabilities: " + result[i].capabilities); 172 console.info("securityType: " + result[i].securityType); 173 console.info("rssi: " + result[i].rssi); 174 console.info("band: " + result[i].band); 175 console.info("frequency: " + result[i].frequency); 176 console.info("channelWidth: " + result[i].channelWidth); 177 console.info("timestamp: " + result[i].timestamp); 178 } 179 }).catch((err:number) => { 180 console.error("failed:" + JSON.stringify(err)); 181 }); 182``` 183 184## wifiManager.getScanResultsSync<sup>9+</sup><sup>(deprecated)</sup> 185 186getScanResultsSync(): Array<[WifiScanInfo](#wifiscaninfo9)> 187 188获取扫描结果,使用同步方式返回结果。 189 190> **说明:** 191> 从 API version 9开始支持,从API version 10开始废弃。建议使用[wifiManager.getScanInfoList](#wifimanagergetscaninfolist10)代替。 192 193**需要权限:** ohos.permission.GET_WIFI_INFO 和 (ohos.permission.GET_WIFI_PEERS_MAC 或 (ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION)) 194 195**系统能力:** SystemCapability.Communication.WiFi.STA 196 197**返回值:** 198 199| **类型** | **说明** | 200| -------- | -------- | 201| Array<[WifiScanInfo](#wifiscaninfo9)> | 扫描结果数组。 | 202 203**错误码:** 204 205以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 206 207| **错误码ID** | **错误信息** | 208 | -------- | -------- | 209| 2501000 | Operation failed.| 210 211**示例:** 212 213```ts 214 import wifiManager from '@ohos.wifiManager'; 215 216 try { 217 let scanInfoList = wifiManager.getScanResultsSync(); 218 console.info("scanInfoList:" + JSON.stringify(scanInfoList)); 219 let len = scanInfoList.length; 220 console.log("wifi received scan info: " + len); 221 if(len > 0){ 222 for (let i = 0; i < len; ++i) { 223 console.info("ssid: " + scanInfoList[i].ssid); 224 console.info("bssid: " + scanInfoList[i].bssid); 225 console.info("capabilities: " + scanInfoList[i].capabilities); 226 console.info("securityType: " + scanInfoList[i].securityType); 227 console.info("rssi: " + scanInfoList[i].rssi); 228 console.info("band: " + scanInfoList[i].band); 229 console.info("frequency: " + scanInfoList[i].frequency); 230 console.info("channelWidth: " + scanInfoList[i].channelWidth); 231 console.info("timestamp: " + scanInfoList[i].timestamp); 232 } 233 } 234 }catch(error){ 235 console.error("failed:" + JSON.stringify(error)); 236 } 237 238``` 239 240## wifiManager.getScanInfoList<sup>10+</sup> 241 242getScanInfoList(): Array<WifiScanInfo> 243 244获取扫描结果。 245 246**需要权限:** ohos.permission.GET_WIFI_INFO 247 248**系统能力:** SystemCapability.Communication.WiFi.STA 249 250**返回值:** 251 252| **类型** | **说明** | 253| -------- | -------- | 254| Array<[WifiScanInfo](#wifiscaninfo9)> | 返回扫描到的热点列表。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的bssid为真实设备地址,否则为随机设备地址。 | 255 256**错误码:** 257 258以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 259 260| **错误码ID** | **错误信息** | 261 | -------- | -------- | 262| 2501000 | Operation failed.| 263 264**示例:** 265 266```ts 267 import wifiManager from '@ohos.wifiManager'; 268 269 try { 270 let scanInfoList = wifiManager.getScanInfoList(); 271 console.info("scanInfoList:" + JSON.stringify(scanInfoList)); 272 let len = scanInfoList.length; 273 console.log("wifi received scan info: " + len); 274 if(len > 0){ 275 for (let i = 0; i < len; ++i) { 276 console.info("ssid: " + scanInfoList[i].ssid); 277 console.info("bssid: " + scanInfoList[i].bssid); 278 console.info("capabilities: " + scanInfoList[i].capabilities); 279 console.info("securityType: " + scanInfoList[i].securityType); 280 console.info("rssi: " + scanInfoList[i].rssi); 281 console.info("band: " + scanInfoList[i].band); 282 console.info("frequency: " + scanInfoList[i].frequency); 283 console.info("channelWidth: " + scanInfoList[i].channelWidth); 284 console.info("timestamp: " + scanInfoList[i].timestamp); 285 } 286 } 287 }catch(error){ 288 console.error("failed:" + JSON.stringify(error)); 289 } 290 291``` 292 293## WifiScanInfo<sup>9+</sup> 294 295WLAN热点信息。 296 297**系统能力:** SystemCapability.Communication.WiFi.STA 298 299 300| **名称** | **类型** | **可读** | **可写** | **说明** | 301| -------- | -------- | -------- | -------- | -------- | 302| ssid | string | 是 | 否 | 热点的SSID,最大长度为32字节,编码格式为UTF-8。 | 303| bssid | string | 是 | 否 | 热点的BSSID,例如:00:11:22:33:44:55。 | 304| bssidType<sup>10+</sup>| [DeviceAddressType](#deviceaddresstype10) | 是 | 否 | 热点的BSSID类型。 | 305| capabilities | string | 是 | 否 | 热点能力。 | 306| securityType | [WifiSecurityType](#wifisecuritytype9) | 是 | 否 | WLAN加密类型。 | 307| rssi | number | 是 | 否 | 热点的信号强度(dBm)。 | 308| band | number | 是 | 否 | WLAN接入点的频段,1:2.4GHZ;2:5GHZ。 | 309| frequency | number | 是 | 否 | WLAN接入点的频率。 | 310| channelWidth | number | 是 | 否 | WLAN接入点的带宽,具体定义参见[WifiChannelWidth](#wifichannelwidth9)。 | 311| centerFrequency0 | number | 是 | 否 | 热点的中心频率。 | 312| centerFrequency1 | number | 是 | 否 | 热点的中心频率。如果热点使用两个不重叠的WLAN信道,则返回两个中心频率,分别用centerFrequency0和centerFrequency1表示。 | 313| infoElems | Array<[WifiInfoElem](#wifiinfoelem9)> | 是 | 否 | 信息元素。 | 314| timestamp | number | 是 | 否 | 时间戳。 | 315 316## DeviceAddressType<sup>10+</sup> 317 318wifi 设备地址(mac/bssid)类型。 319 320**系统能力:** SystemCapability.Communication.WiFi.Core 321 322| **名称** | **值** | **说明** | 323| -------- | -------- | -------- | 324| RANDOM_DEVICE_ADDRESS | 0 | 随机设备地址。 | 325| REAL_DEVICE_ADDRESS | 1 | 真实设备地址。 | 326 327## WifiSecurityType<sup>9+</sup> 328 329表示加密类型的枚举。 330 331**系统能力:** SystemCapability.Communication.WiFi.Core 332 333 334| **名称** | **值** | **说明** | 335| -------- | -------- | -------- | 336| WIFI_SEC_TYPE_INVALID | 0 | 无效加密类型。 | 337| WIFI_SEC_TYPE_OPEN | 1 | 开放加密类型。候选网络配置不支持该加密类型。 | 338| WIFI_SEC_TYPE_WEP | 2 | Wired Equivalent Privacy (WEP)加密类型。候选网络配置不支持该加密类型。 | 339| WIFI_SEC_TYPE_PSK | 3 | Pre-shared key (PSK)加密类型。 | 340| WIFI_SEC_TYPE_SAE | 4 | Simultaneous Authentication of Equals (SAE)加密类型。 | 341| WIFI_SEC_TYPE_EAP | 5 | EAP加密类型。 | 342| WIFI_SEC_TYPE_EAP_SUITE_B | 6 | Suite-B 192位加密类型。 | 343| WIFI_SEC_TYPE_OWE | 7 | 机会性无线加密类型。 | 344| WIFI_SEC_TYPE_WAPI_CERT | 8 | WAPI-Cert加密类型。 | 345| WIFI_SEC_TYPE_WAPI_PSK | 9 | WAPI-PSK加密类型。 | 346 347 348## WifiBandType<sup>10+</sup> 349 350表示WIFI频段类型的枚举。 351 352**系统能力:** SystemCapability.Communication.WiFi.STA 353 354| **名称** | **值** | **说明** | 355| -------- | -------- | -------- | 356| WIFI_BAND_NONE | 0 | 无效频段类型。 | 357| WIFI_BAND_2G | 1 | 2.4G频段类型。 | 358| WIFI_BAND_5G | 2 | 5G频段类型。 | 359| WIFI_BAND_6G | 3 | 6G频段类型。 | 360| WIFI_BAND_60G | 4 | 60G频段类型。 | 361 362## WifiStandard<sup>10+</sup> 363 364表示WIFI标准的枚举。 365 366**系统能力:** SystemCapability.Communication.WiFi.STA 367 368| **名称** | **值** | **说明** | 369| -------- | -------- | -------- | 370| WIFI_STANDARD_UNDEFINED | 0 | 无效WIFI标准类型。 | 371| WIFI_STANDARD_11A | 1 | 802.11a WiFi标准类型。 | 372| WIFI_STANDARD_11B | 2 | 802.11b WiFi标准类型。 | 373| WIFI_STANDARD_11G | 3 | 802.11g WiFi标准类型。 | 374| WIFI_STANDARD_11N | 4 | 802.11n WiFi标准类型。 | 375| WIFI_STANDARD_11AC | 5 | 802.11ac WiFi标准类型。 | 376| WIFI_STANDARD_11AX | 6 | 802.11ax WiFi标准类型。 | 377| WIFI_STANDARD_11AD | 7 | 802.11ad WiFi标准类型。 | 378 379## WifiInfoElem<sup>9+</sup> 380 381WLAN热点信息。 382 383**系统能力:** SystemCapability.Communication.WiFi.STA 384 385 386| **名称** | **类型** | **可读** | **可写** | **说明** | 387| -------- | -------- | -------- | -------- | -------- | 388| eid | number | 是 | 否 | 元素ID。 | 389| content | Uint8Array | 是 | 否 | 元素内容。 | 390 391 392## WifiChannelWidth<sup>9+</sup> 393 394表示带宽类型的枚举。 395 396**系统能力:** SystemCapability.Communication.WiFi.STA 397 398 399| **名称** | **值** | **说明** | 400| -------- | -------- | -------- | 401| WIDTH_20MHZ | 0 | 20MHZ。 | 402| WIDTH_40MHZ | 1 | 40MHZ。 | 403| WIDTH_80MHZ | 2 | 80MHZ。 | 404| WIDTH_160MHZ | 3 | 160MHZ。 | 405| WIDTH_80MHZ_PLUS | 4 | 80MHZ<sup>+</sup>。 | 406| WIDTH_INVALID | 5 | 无效值 | 407 408 409## WifiDeviceConfig<sup>9+</sup> 410 411WLAN配置信息。 412 413**系统能力:** SystemCapability.Communication.WiFi.STA 414 415 416| **名称** | **类型** | **可读** | **可写** | **说明** | 417| -------- | -------- | -------- | -------- | -------- | 418| ssid | string | 是 | 否 | 热点的SSID,最大长度为32字节,编码格式为UTF-8。 | 419| bssid | string | 是 | 否 | 热点的BSSID,例如:00:11:22:33:44:55。 | 420| bssidType<sup>10+</sup> | [DeviceAddressType](#deviceaddresstype10) | 是 | 否 | 热点的BSSID类型。 | 421| preSharedKey | string | 是 | 否 | 热点的密钥,最大长度为64字节。当securityType为WIFI_SEC_TYPE_OPEN时该字段需为空串,其他加密类型不能为空串。当securityType为WIFI_SEC_TYPE_WEP时,该字段长度只允许为5、10、13、26、16和32字节其中之一,并且当字段长度为偶数时,该字段必须为纯十六进制数字构成。当securityType为WIFI_SEC_TYPE_SAE时,该字段最小长度为1字节。当securityType为WIFI_SEC_TYPE_PSK时,该字段最小长度为8字节。 | 422| isHiddenSsid | boolean | 是 | 否 | 是否是隐藏网络。 | 423| securityType | [WifiSecurityType](#wifisecuritytype9)| 是 | 否 | 加密类型。 | 424| eapConfig<sup>10+</sup> | [WifiEapConfig](#wifieapconfig10) | 是 | 否 | 可扩展身份验证协议配置。只有securityType为WIFI_SEC_TYPE_EAP时需要填写。 | 425 426 427## WifiEapConfig<sup>10+</sup> 428 429可扩展身份验证协议配置信息。 430 431**系统能力:** SystemCapability.Communication.WiFi.STA 432 433| **名称** | **类型** | **可读** | **可写** | **说明** | 434| -------- | -------- | -------- | -------- | -------- | 435| eapMethod | [EapMethod](#eapmethod10) | 是 | 否 | EAP认证方式。 | 436| phase2Method | [Phase2Method](#phase2method10) | 是 | 否 | 第二阶段认证方式。只有eapMethod为EAP_PEAP或EAP_TTLS时需要填写。 | 437| identity | string | 是 | 否 | 身份信息。当eapMethod为EAP_PEAP、EAP_TLS或EAP_PWD时,该字段不能为空串。 | 438| anonymousIdentity | string | 是 | 否 | 匿名身份。暂未使用。 | 439| password | string | 是 | 否 | 密码。当eapMethod为EAP_PEAP或EAP_PWD时,该字段不能为空串。 | 440| caCertAlias | string | 是 | 否 | CA 证书别名。 | 441| caPath | string | 是 | 否 | CA 证书路径。 | 442| clientCertAlias | string | 是 | 否 | 客户端证书别名。 | 443| certEntry | Uint8Array | 是 | 是 | CA 证书内容。当eapMethod为EAP_TLS时,如果该字段为空,则clientCertAlias不能为空。 | 444| certPassword | string | 是 | 是 | CA证书密码。 | 445| altSubjectMatch | string | 是 | 否 | 替代主题匹配。 | 446| domainSuffixMatch | string | 是 | 否 | 域后缀匹配。 | 447| realm | string | 是 | 否 | 通行证凭证的领域。 | 448| plmn | string | 是 | 否 | 公共陆地移动网的直通凭证提供商。 | 449| eapSubId | number | 是 | 否 | SIM卡的子ID。 | 450 451 452## EapMethod<sup>10+</sup> 453 454表示EAP认证方式的枚举。 455 456**系统能力:** SystemCapability.Communication.WiFi.STA 457 458| 名称 | 值 | 说明 | 459| -------- | -------- | -------- | 460| EAP_NONE | 0 | 不指定。 | 461| EAP_PEAP | 1 | PEAP类型。 | 462| EAP_TLS | 2 | TLS类型。 | 463| EAP_TTLS | 3 | TTLS类型。 | 464| EAP_PWD | 4 | PWD类型。 | 465| EAP_SIM | 5 | SIM类型。 | 466| EAP_AKA | 6 | AKA类型。 | 467| EAP_AKA_PRIME | 7 | AKA Prime类型。 | 468| EAP_UNAUTH_TLS | 8 | UNAUTH TLS类型。 | 469 470 471## Phase2Method<sup>10+</sup> 472 473表示第二阶段认证方式的枚举。 474 475**系统能力:** SystemCapability.Communication.WiFi.STA 476 477| 名称 | 值 | 说明 | 478| -------- | -------- | -------- | 479| PHASE2_NONE | 0 | 不指定。 | 480| PHASE2_PAP | 1 | PAP类型。 | 481| PHASE2_MSCHAP | 2 | MSCHAP类型。 | 482| PHASE2_MSCHAPV2 | 3 | MSCHAPV2类型。 | 483| PHASE2_GTC | 4 | GTC类型。 | 484| PHASE2_SIM | 5 | SIM类型。 | 485| PHASE2_AKA | 6 | AKA类型。 | 486| PHASE2_AKA_PRIME | 7 | AKA Prime类型。 | 487 488 489 490 491## wifiManager.addCandidateConfig<sup>9+</sup> 492 493addCandidateConfig(config: WifiDeviceConfig): Promise<number> 494 495添加候选网络配置,使用Promise异步回调。 496 497**需要权限:** ohos.permission.SET_WIFI_INFO 498 499**系统能力:** SystemCapability.Communication.WiFi.STA 500 501**参数:** 502 503| **参数名** | **类型** | **必填** | **说明** | 504| -------- | -------- | -------- | -------- | 505| config | [WifiDeviceConfig](#wifideviceconfig9) | 是 | WLAN配置信息。如果bssidType未指定值,则bssidType默认为随机设备地址类型。 | 506 507**返回值:** 508 509 | **类型** | **说明** | 510 | -------- | -------- | 511 | Promise<number> | Promise对象。表示网络配置ID。 | 512 513**错误码:** 514 515以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 516 517| **错误码ID** | **错误信息** | 518 | -------- | -------- | 519| 2501000 | Operation failed.| 520 521**示例:** 522`````ts 523 import wifiManager from '@ohos.wifiManager'; 524 525 try { 526 let config:wifiManager.WifiDeviceConfig = { 527 ssid : "****", 528 preSharedKey : "****", 529 securityType : 0 530 } 531 wifiManager.addCandidateConfig(config).then(result => { 532 console.info("result:" + JSON.stringify(result)); 533 }).catch((err:number) => { 534 console.error("failed:" + JSON.stringify(err)); 535 }); 536 }catch(error){ 537 console.error("failed:" + JSON.stringify(error)); 538 } 539````` 540 541## wifiManager.addCandidateConfig<sup>9+</sup> 542 543addCandidateConfig(config: WifiDeviceConfig, callback: AsyncCallback<number>): void 544 545添加候选网络配置,使用callback异步回调。 546 547**需要权限:** ohos.permission.SET_WIFI_INFO 548 549**系统能力:** SystemCapability.Communication.WiFi.STA 550 551**参数:** 552 553| **参数名** | **类型** | **必填** | **说明** | 554| -------- | -------- | -------- | -------- | 555| config | [WifiDeviceConfig](#wifideviceconfig9) | 是 | WLAN配置信息。如果bssidType未指定值,则bssidType默认为随机设备地址类型。 | 556| callback | AsyncCallback<number> | 是 | 回调函数。当操作成功时,err为0,data为添加的网络配置ID,如果data值为-1,表示添加失败。如果操作出现错误,err为非0值。 | 557 558**错误码:** 559 560以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 561 562| **错误码ID** | **错误信息** | 563 | -------- | -------- | 564| 2501000 | Operation failed.| 565 566**示例:** 567`````ts 568 import wifiManager from '@ohos.wifiManager'; 569 570 try { 571 let config:wifiManager.WifiDeviceConfig = { 572 ssid : "****", 573 preSharedKey : "****", 574 securityType : 0 575 } 576 wifiManager.addCandidateConfig(config,(error,result) => { 577 console.info("result:" + JSON.stringify(result)); 578 }); 579 }catch(error){ 580 console.error("failed:" + JSON.stringify(error)); 581 } 582````` 583 584## wifiManager.removeCandidateConfig<sup>9+</sup> 585 586removeCandidateConfig(networkId: number): Promise<void> 587 588移除候选网络配置,使用Promise异步回调。 589 590**需要权限:** ohos.permission.SET_WIFI_INFO 591 592**系统能力:** SystemCapability.Communication.WiFi.STA 593 594**参数:** 595 596 | **参数名** | **类型** | **必填** | **说明** | 597 | -------- | -------- | -------- | -------- | 598 | networkId | number | 是 | 网络配置ID。 | 599 600**返回值:** 601 602 | **类型** | **说明** | 603 | -------- | -------- | 604 | Promise<void> | Promise对象。 | 605 606**错误码:** 607 608以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 609 610| **错误码ID** | **错误信息** | 611 | -------- | -------- | 612| 2501000 | Operation failed.| 613 614**示例:** 615 616```ts 617 import wifiManager from '@ohos.wifiManager'; 618 619 try { 620 let networkId = 0; 621 wifiManager.removeCandidateConfig(networkId).then(result => { 622 console.info("result:" + JSON.stringify(result)); 623 }).catch((err:number) => { 624 console.error("failed:" + JSON.stringify(err)); 625 }); 626 }catch(error){ 627 console.error("failed:" + JSON.stringify(error)); 628 } 629``` 630 631## wifiManager.removeCandidateConfig<sup>9+</sup> 632 633removeCandidateConfig(networkId: number, callback: AsyncCallback<void>): void 634 635移除候选网络配置,使用callback异步回调。 636 637**需要权限:** ohos.permission.SET_WIFI_INFO 638 639**系统能力:** SystemCapability.Communication.WiFi.STA 640 641**参数:** 642 643 | **参数名** | **类型** | **必填** | **说明** | 644 | -------- | -------- | -------- | -------- | 645 | networkId | number | 是 | 网络配置ID。 | 646 | callback | AsyncCallback<void> | 是 | 回调函数。当操作成功时,err为0。如果error为非0,表示处理出现错误。 | 647 648**错误码:** 649 650以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 651 652| **错误码ID** | **错误信息** | 653 | -------- | -------- | 654| 2501000 | Operation failed.| 655 656**示例:** 657```ts 658 import wifiManager from '@ohos.wifiManager'; 659 660 try { 661 let networkId = 0; 662 wifiManager.removeCandidateConfig(networkId,(error,result) => { 663 console.info("result:" + JSON.stringify(result)); 664 }); 665 }catch(error){ 666 console.error("failed:" + JSON.stringify(error)); 667 } 668``` 669 670## wifiManager.getCandidateConfigs<sup>9+</sup> 671 672getCandidateConfigs(): Array<WifiDeviceConfig> 673 674获取候选网络配置。 675 676**需要权限:** 677 678API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 679 680API 10起:ohos.permission.GET_WIFI_INFO 681 682**系统能力:** SystemCapability.Communication.WiFi.STA 683 684**返回值:** 685 686 | **类型** | **说明** | 687 | -------- | -------- | 688 | Array<[WifiDeviceConfig](#wifideviceconfig9)> | 候选网络配置数组。 | 689 690**错误码:** 691 692以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 693 694| **错误码ID** | **错误信息** | 695 | -------- | -------- | 696| 2501000 | Operation failed.| 697 698**示例:** 699 700`````ts 701 import wifiManager from '@ohos.wifiManager'; 702 703 try { 704 let configs = wifiManager.getCandidateConfigs(); 705 console.info("configs:" + JSON.stringify(configs)); 706 let len = configs.length; 707 console.log("result len: " + len); 708 if(len > 0){ 709 for (let i = 0; i < len; ++i) { 710 console.info("ssid: " + configs[i].ssid); 711 console.info("bssid: " + configs[i].bssid); 712 } 713 } 714 }catch(error){ 715 console.error("failed:" + JSON.stringify(error)); 716 } 717 718````` 719 720## wifiManager.connectToCandidateConfig<sup>9+</sup> 721 722connectToCandidateConfig(networkId: number): void 723 724应用使用该接口连接到自己添加的候选网络(如果当前已经连接到热点,需要先断开连接)。 725 726**需要权限:** ohos.permission.SET_WIFI_INFO 727 728**系统能力:** SystemCapability.Communication.WiFi.STA 729 730**参数:** 731 732 | **参数名** | **类型** | **必填** | **说明** | 733 | -------- | -------- | -------- | -------- | 734 | networkId | number | 是 | 候选网络配置的ID。 | 735 736**错误码:** 737 738以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 739 740| **错误码ID** | **错误信息** | 741 | -------- | -------- | 742| 2501000 | Operation failed.| 743| 2501001 | Wifi is closed.| 744 745**示例:** 746```ts 747 import wifiManager from '@ohos.wifiManager'; 748 749 try { 750 let networkId = 0; // 实际的候选网络ID,在添加候选网络时生成,取自WifiDeviceConfig.netId 751 wifiManager.connectToCandidateConfig(networkId); 752 }catch(error){ 753 console.error("failed:" + JSON.stringify(error)); 754 } 755 756``` 757 758 759## wifiManager.getSignalLevel<sup>9+</sup> 760 761getSignalLevel(rssi: number, band: number): number 762 763查询WLAN信号强度。 764 765**需要权限:** ohos.permission.GET_WIFI_INFO 766 767**系统能力:** SystemCapability.Communication.WiFi.STA 768 769**参数:** 770 771 | **参数名** | **类型** | **必填** | **说明** | 772 | -------- | -------- | -------- | -------- | 773 | rssi | number | 是 | 热点的信号强度(dBm)。 | 774 | band | number | 是 | WLAN接入点的频段,1:2.4GHZ;2:5GHZ。 | 775 776**返回值:** 777 778 | **类型** | **说明** | 779 | -------- | -------- | 780 | number | 信号强度,取值范围为[0, 4]。 | 781 782**错误码:** 783 784以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 785 786| **错误码ID** | **错误信息** | 787 | -------- | -------- | 788| 2501000 | Operation failed.| 789 790**示例:** 791```ts 792 import wifiManager from '@ohos.wifiManager'; 793 794 try { 795 let rssi = 0; 796 let band = 0; 797 let level = wifiManager.getSignalLevel(rssi,band); 798 console.info("level:" + JSON.stringify(level)); 799 }catch(error){ 800 console.error("failed:" + JSON.stringify(error)); 801 } 802 803``` 804 805## wifiManager.getLinkedInfo<sup>9+</sup> 806 807getLinkedInfo(): Promise<WifiLinkedInfo> 808 809获取WLAN连接信息,使用Promise异步回调。 810 811**需要权限:** ohos.permission.GET_WIFI_INFO 。 812 813当macType是1 - 设备MAC地址时,获取 macAddress 还需申请ohos.permission.GET_WIFI_LOCAL_MAC权限,无该权限时,macAddress 返回空字符串。 814 815**系统能力:** SystemCapability.Communication.WiFi.STA 816 817**返回值:** 818 819 | 类型 | 说明 | 820 | -------- | -------- | 821 | Promise<[WifiLinkedInfo](#wifilinkedinfo9)> | Promise对象。表示WLAN连接信息。 | 822 823**错误码:** 824 825以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 826 827| **错误码ID** | **错误信息** | 828 | -------- | -------- | 829| 2501000 | Operation failed.| 830| 2501001 | Wifi is closed.| 831 832## wifiManager.getLinkedInfo<sup>9+</sup> 833 834getLinkedInfo(callback: AsyncCallback<WifiLinkedInfo>): void 835 836获取WLAN连接信息,使用callback异步回调。 837 838**需要权限:** ohos.permission.GET_WIFI_INFO 。 839 840当macType是1 - 设备MAC地址时,获取 macAddress 还需申请ohos.permission.GET_WIFI_LOCAL_MAC权限,无该权限时,macAddress 返回空字符串。 841 842**系统能力:** SystemCapability.Communication.WiFi.STA 843 844**参数:** 845 846 | 参数名 | 类型 | 必填 | 说明 | 847 | -------- | -------- | -------- | -------- | 848 | callback | AsyncCallback<[WifiLinkedInfo](#wifilinkedinfo9)> | 是 | 回调函数。当获取成功时,err为0,data表示WLAN连接信息。如果err为非0,表示处理出现错误。 | 849 850**错误码:** 851 852以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 853 854| **错误码ID** | **错误信息** | 855 | -------- | -------- | 856| 2501000 | Operation failed.| 857| 2501001 | Wifi is closed.| 858 859**示例:** 860```ts 861 import wifiManager from '@ohos.wifiManager'; 862 863 wifiManager.getLinkedInfo((err, data) => { 864 if (err) { 865 console.error("get linked info error"); 866 return; 867 } 868 console.info("get wifi linked info: " + JSON.stringify(data)); 869 }); 870 871 wifiManager.getLinkedInfo().then(data => { 872 console.info("get wifi linked info: " + JSON.stringify(data)); 873 }).catch((error:number) => { 874 console.info("get linked info error"); 875 }); 876``` 877 878 879## WifiLinkedInfo<sup>9+</sup> 880 881提供WLAN连接的相关信息。 882 883**系统能力:** SystemCapability.Communication.WiFi.STA 884 885| 名称 | 类型 | 可读 | 可写 | 说明 | 886| -------- | -------- | -------- | -------- | -------- | 887| ssid | string | 是 | 否 | 热点的SSID,编码格式为UTF-8。 | 888| bssid | string | 是 | 否 | 热点的BSSID。 | 889| rssi | number | 是 | 否 | 热点的信号强度(dBm)。 | 890| band | number | 是 | 否 | WLAN接入点的频段,1:2.4GHZ;2:5GHZ。 | 891| linkSpeed | number | 是 | 否 | WLAN接入点的上行速度。 | 892| rxLinkSpeed<sup>10+</sup> | number | 是 | 否 | WLAN接入点的下行速度。 | 893| maxSupportedTxLinkSpeed<sup>10+</sup> | number | 是 | 否 | 当前支持的最大上行速率。 | 894| maxSupportedRxLinkSpeed<sup>10+</sup> | number | 是 | 否 | 当前支持的最大下行速率。 | 895| frequency | number | 是 | 否 | WLAN接入点的频率。 | 896| isHidden | boolean | 是 | 否 | WLAN接入点是否是隐藏网络。 | 897| isRestricted | boolean | 是 | 否 | WLAN接入点是否限制数据量。 | 898| macType | number | 是 | 否 | MAC地址类型。0 - 随机MAC地址,1 - 设备MAC地址。 | 899| macAddress | string | 是 | 否 | 设备的MAC地址。 | 900| ipAddress | number | 是 | 否 | WLAN连接的IP地址。 | 901| connState | [ConnState](#connstate9) | 是 | 否 | WLAN连接状态。 | 902| channelWidth<sup>10+</sup> | [WifiChannelWidth](#wifichannelwidth9) | 是 | 否 | 当前连接热点的信道带宽。 | 903| wifiStandard<sup>10+</sup> | [WifiStandard](#wifistandard10) | 是 | 否 | 当前连接热点的WiFi标准。 | 904 905## ConnState<sup>9+</sup> 906 907表示WLAN连接状态的枚举。 908 909**系统能力:** SystemCapability.Communication.WiFi.STA 910 911| 名称 | 值 | 说明 | 912| -------- | -------- | -------- | 913| SCANNING | 0 | 设备正在搜索可用的AP。 | 914| CONNECTING | 1 | 正在建立WLAN连接。 | 915| AUTHENTICATING | 2 | WLAN连接正在认证中。 | 916| OBTAINING_IPADDR | 3 | 正在获取WLAN连接的IP地址。 | 917| CONNECTED | 4 | WLAN连接已建立。 | 918| DISCONNECTING | 5 | WLAN连接正在断开。 | 919| DISCONNECTED | 6 | WLAN连接已断开。 | 920| UNKNOWN | 7 | WLAN连接建立失败。 | 921 922 923## wifiManager.isConnected<sup>9+</sup> 924 925isConnected(): boolean 926 927查询WLAN是否已连接。 928 929**需要权限:** ohos.permission.GET_WIFI_INFO 930 931**系统能力:** SystemCapability.Communication.WiFi.STA 932 933**返回值:** 934 935 | **类型** | **说明** | 936 | -------- | -------- | 937 | boolean | true:已连接, false:未连接。 | 938 939**错误码:** 940 941以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 942 943| **错误码ID** | **错误信息** | 944 | -------- | -------- | 945| 2501000 | Operation failed.| 946 947**示例:** 948```ts 949 import wifiManager from '@ohos.wifiManager'; 950 951 try { 952 let ret = wifiManager.isConnected(); 953 console.info("isConnected:" + ret); 954 }catch(error){ 955 console.error("failed:" + JSON.stringify(error)); 956 } 957 958``` 959 960 961## wifiManager.isFeatureSupported<sup>9+</sup> 962 963isFeatureSupported(featureId: number): boolean 964 965判断设备是否支持相关WLAN特性。 966 967**需要权限:** ohos.permission.GET_WIFI_INFO 968 969**系统能力:** SystemCapability.Communication.WiFi.Core 970 971**参数:** 972 973 | **参数名** | **类型** | 必填 | **说明** | 974 | -------- | -------- | -------- | -------- | 975 | featureId | number | 是 | 特性ID值。 | 976 977**特性ID值枚举:** 978 979| 枚举值 | 说明 | 980| -------- | -------- | 981| 0x0001 | 基础结构模式特性。 | 982| 0x0002 | 5 GHz带宽特性。 | 983| 0x0004 | GAS/ANQP特性。 | 984| 0x0008 | Wifi-Direct特性。 | 985| 0x0010 | Soft AP特性。 | 986| 0x0040 | Wi-Fi AWare组网特性。 | 987| 0x8000 | AP STA共存特性。 | 988| 0x8000000 | WPA3-Personal SAE特性。 | 989| 0x10000000 | WPA3-Enterprise Suite-B | 990| 0x20000000 | 增强开放特性。 | 991 992**返回值:** 993 994 | **类型** | **说明** | 995 | -------- | -------- | 996 | boolean | true:支持, false:不支持。 | 997 998**错误码:** 999 1000以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1001 1002| **错误码ID** | **错误信息** | 1003 | -------- | -------- | 1004| 2401000 | Operation failed.| 1005 1006**示例:** 1007```ts 1008 import wifiManager from '@ohos.wifiManager'; 1009 1010 try { 1011 let featureId = 0; 1012 let ret = wifiManager.isFeatureSupported(featureId); 1013 console.info("isFeatureSupported:" + ret); 1014 }catch(error){ 1015 console.error("failed:" + JSON.stringify(error)); 1016 } 1017 1018``` 1019 1020 1021## wifiManager.getIpInfo<sup>9+</sup> 1022 1023getIpInfo(): IpInfo 1024 1025获取IP信息。 1026 1027**需要权限:** ohos.permission.GET_WIFI_INFO 1028 1029**系统能力:** SystemCapability.Communication.WiFi.STA 1030 1031**返回值:** 1032 1033 | **类型** | **说明** | 1034 | -------- | -------- | 1035 | [IpInfo](#ipinfo9) | IP信息。 | 1036 1037**错误码:** 1038 1039以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1040 1041| **错误码ID** | **错误信息** | 1042 | -------- | -------- | 1043| 2501000 | Operation failed.| 1044 1045**示例:** 1046```ts 1047 import wifiManager from '@ohos.wifiManager'; 1048 1049 try { 1050 let info = wifiManager.getIpInfo(); 1051 console.info("info:" + JSON.stringify(info)); 1052 }catch(error){ 1053 console.error("failed:" + JSON.stringify(error)); 1054 } 1055``` 1056 1057## IpInfo<sup>9+</sup> 1058 1059IP信息。 1060 1061**系统能力:** SystemCapability.Communication.WiFi.STA 1062 1063| **名称** | **类型** | **可读** | **可写** | **说明** | 1064| -------- | -------- | -------- | -------- | -------- | 1065| ipAddress | number | 是 | 否 | IP地址。 | 1066| gateway | number | 是 | 否 | 网关。 | 1067| netmask | number | 是 | 否 | 掩码。 | 1068| primaryDns | number | 是 | 否 | 主DNS服务器IP地址。 | 1069| secondDns | number | 是 | 否 | 备DNS服务器IP地址。 | 1070| serverIp | number | 是 | 否 | DHCP服务端IP地址。 | 1071| leaseDuration | number | 是 | 否 | IP地址租用时长,单位:秒。 | 1072 1073 1074## wifiManager.getIpv6Info<sup>10+</sup> 1075 1076getIpv6Info(): Ipv6Info 1077 1078获取IPV6信息。 1079 1080**需要权限:** ohos.permission.GET_WIFI_INFO 1081 1082**系统能力:** SystemCapability.Communication.WiFi.STA 1083 1084**返回值:** 1085 1086| **类型** | **说明** | 1087| -------- | -------- | 1088| Ipv6Info | Ipv6信息。 | 1089 1090**错误码:** 1091 1092以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1093 1094| **错误码ID** | **错误信息** | 1095 | -------- | -------- | 1096| 2501000 | Operation failed.| 1097 1098**示例:** 1099```ts 1100 import wifiManager from '@ohos.wifiManager'; 1101 1102 try { 1103 let info = wifiManager.getIpv6Info(); 1104 console.info("info:" + JSON.stringify(info)); 1105 }catch(error){ 1106 console.error("failed:" + JSON.stringify(error)); 1107 } 1108``` 1109## Ipv6Info <sup>10+</sup> 1110 1111Ipv6信息。 1112 1113**系统能力:** SystemCapability.Communication.WiFi.STA 1114 1115| **名称** | **类型** | **可读** | **可写** | **说明** | 1116| -------- | -------- | -------- | -------- | -------- | 1117| linkIpv6Address | string | 是 | 否 | 链路Ipv6地址。 | 1118| globalIpv6Address | string | 是 | 否 | 全局Ipv6地址。 | 1119| randomGlobalIpv6Address | string | 是 | 否 | 随机全局Ipv6地址。 预留字段,暂不支持。| 1120| gateway | string | 是 | 否 | 网关。 | 1121| netmask | string | 是 | 否 | 网络掩码。 | 1122| primaryDNS | string | 是 | 否 | 主DNS服务器Ipv6地址。 | 1123| secondDNS | string | 是 | 否 | 备DNS服务器Ipv6地址。 | 1124 1125 1126## wifiManager.getCountryCode<sup>9+</sup> 1127 1128getCountryCode(): string 1129 1130获取国家码信息。 1131 1132**需要权限:** ohos.permission.GET_WIFI_INFO 1133 1134**系统能力:** SystemCapability.Communication.WiFi.Core 1135 1136**返回值:** 1137 1138 | **类型** | **说明** | 1139 | -------- | -------- | 1140 | string | 国家码。 | 1141 1142**错误码:** 1143 1144以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1145 1146| **错误码ID** | **错误信息** | 1147 | -------- | -------- | 1148| 2401000 | Operation failed.| 1149 1150**示例:** 1151```ts 1152 import wifiManager from '@ohos.wifiManager'; 1153 1154 try { 1155 let code = wifiManager.getCountryCode(); 1156 console.info("code:" + code); 1157 }catch(error){ 1158 console.error("failed:" + JSON.stringify(error)); 1159 } 1160``` 1161 1162 1163 1164 1165## wifiManager.isBandTypeSupported<sup>10+</sup> 1166 1167isBandTypeSupported(bandType: WifiBandType): boolean 1168 1169判断当前频段是否支持。 1170 1171**需要权限:** ohos.permission.GET_WIFI_INFO。 1172 1173**系统能力:** SystemCapability.Communication.WiFi.STA 1174 1175**参数:** 1176 1177 | **参数名** | **类型** | **必填** | **说明** | 1178 | -------- | -------- | -------- | -------- | 1179 | bandType | WifiBandType | 是 | Wifi 频段类型。 | 1180 1181**返回值:** 1182 1183 | **类型** | **说明** | 1184 | -------- | -------- | 1185 | boolean | true:支持, false:不支持。 | 1186 1187**错误码:** 1188 1189以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1190 1191| **错误码ID** | **错误信息** | 1192 | -------- | -------- | 1193| 2501000 | Operation failed.| 1194 1195**示例:** 1196```ts 1197 import wifiManager from '@ohos.wifiManager'; 1198 1199 try { 1200 let type = 0; 1201 let isBandTypeSupported = wifiManager.isBandTypeSupported(type); 1202 console.info("isBandTypeSupported:" + isBandTypeSupported); 1203 }catch(error){ 1204 console.error("failed:" + JSON.stringify(error)); 1205 } 1206``` 1207 1208 1209## wifiManager.isMeteredHotspot<sup>11+</sup> 1210 1211isMeteredHotspot(): boolean 1212 1213查询设备当前连接的wifi是否是手机热点。 1214 1215**需要权限:** ohos.permission.GET_WIFI_INFO 1216 1217**系统能力:** SystemCapability.Communication.WiFi.STA 1218 1219**返回值:** 1220 1221 | **类型** | **说明** | 1222 | -------- | -------- | 1223 | boolean | true:是手机热点, false:不是手机热点。 | 1224 1225**错误码:** 1226 1227以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1228 1229| **错误码ID** | **错误信息** | 1230 | -------- | -------- | 1231| 2501000 | Operation failed.| 1232 1233**示例:** 1234 1235```ts 1236 import wifiManager from '@ohos.wifiManager'; 1237 1238 try { 1239 let isMeteredHotspot = wifiManager.isMeteredHotspot(); 1240 console.info("isMeteredHotspot:" + isMeteredHotspot); 1241 }catch(error){ 1242 console.error("failed:" + JSON.stringify(error)); 1243 } 1244``` 1245 1246 1247 1248## wifiManager.getP2pLinkedInfo<sup>9+</sup> 1249 1250getP2pLinkedInfo(): Promise<WifiP2pLinkedInfo> 1251 1252获取P2P连接信息,使用Promise异步回调。 1253 1254**需要权限:** ohos.permission.GET_WIFI_INFO 1255 1256获取 groupOwnerAddr 还需申请ohos.permission.GET_WIFI_LOCAL_MAC权限,无该权限时,groupOwnerAddr 返回全零地址。 1257 1258**系统能力:** SystemCapability.Communication.WiFi.P2P 1259 1260**返回值:** 1261 1262 | 类型 | 说明 | 1263 | -------- | -------- | 1264 | Promise<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | Promise对象。表示P2P连接信息。 | 1265 1266**错误码:** 1267 1268以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1269 1270| **错误码ID** | **错误信息** | 1271 | -------- | -------- | 1272| 2801000 | Operation failed.| 1273 1274 1275## wifiManager.getP2pLinkedInfo<sup>9+</sup> 1276 1277getP2pLinkedInfo(callback: AsyncCallback<WifiP2pLinkedInfo>): void 1278 1279获取P2P连接信息,使用callback异步回调。 1280 1281**需要权限:** ohos.permission.GET_WIFI_INFO 1282 1283获取 groupOwnerAddr 还需申请ohos.permission.GET_WIFI_LOCAL_MAC权限,无该权限时,groupOwnerAddr 返回全零地址。 1284 1285**系统能力:** SystemCapability.Communication.WiFi.P2P 1286 1287**参数:** 1288 1289 | 参数名 | 类型 | 必填 | 说明 | 1290 | -------- | -------- | -------- | -------- | 1291 | callback | AsyncCallback<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | 是 | 回调函数。当操作成功时,err为0,data表示P2P连接信息。如果err为非0,表示处理出现错误。 | 1292 1293**错误码:** 1294 1295以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1296 1297| **错误码ID** | **错误信息** | 1298 | -------- | -------- | 1299| 2801000 | Operation failed.| 1300 1301**示例:** 1302```ts 1303 import wifiManager from '@ohos.wifiManager'; 1304 1305 wifiManager.getP2pLinkedInfo((err, data) => { 1306 if (err) { 1307 console.error("get p2p linked info error"); 1308 return; 1309 } 1310 console.info("get wifi p2p linked info: " + JSON.stringify(data)); 1311 }); 1312 1313 wifiManager.getP2pLinkedInfo().then(data => { 1314 console.info("get wifi p2p linked info: " + JSON.stringify(data)); 1315 }); 1316``` 1317 1318 1319## WifiP2pLinkedInfo<sup>9+</sup> 1320 1321提供WLAN连接的相关信息。 1322 1323**系统能力:** SystemCapability.Communication.WiFi.P2P 1324 1325| 名称 | 类型 | 可读 | 可写 | 说明 | 1326| -------- | -------- | -------- | -------- | -------- | 1327| connectState | [P2pConnectState](#p2pconnectstate9) | 是 | 否 | P2P连接状态。 | 1328| isGroupOwner | boolean | 是 | 否 | 是否是群主。 | 1329| groupOwnerAddr | string | 是 | 否 | 群组IP地址。 1330 1331 1332## P2pConnectState<sup>9+</sup> 1333 1334表示P2P连接状态的枚举。 1335 1336**系统能力:** SystemCapability.Communication.WiFi.P2P 1337 1338| 名称 | 值 | 说明 | 1339| -------- | -------- | -------- | 1340| DISCONNECTED | 0 | 断开状态。 | 1341| CONNECTED | 1 | 连接状态。 | 1342 1343## wifiManager.getCurrentGroup<sup>9+</sup> 1344 1345getCurrentGroup(): Promise<WifiP2pGroupInfo> 1346 1347获取P2P当前组信息,使用Promise异步回调。 1348 1349**需要权限:** 1350 1351API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1352 1353API 10起:ohos.permission.GET_WIFI_INFO 1354 1355**系统能力:** SystemCapability.Communication.WiFi.P2P 1356 1357**返回值:** 1358 1359| 类型 | 说明 | 1360| -------- | -------- | 1361| Promise<[WifiP2pGroupInfo](#wifip2pgroupinfo9)> | Promise对象。表示当前组信息。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的deviceAddress为真实设备地址,否则为随机设备地址。 | 1362 1363**错误码:** 1364 1365以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1366 1367| **错误码ID** | **错误信息** | 1368 | -------- | -------- | 1369| 2801000 | Operation failed.| 1370 1371## wifiManager.getCurrentGroup<sup>9+</sup> 1372 1373getCurrentGroup(callback: AsyncCallback<WifiP2pGroupInfo>): void 1374 1375获取P2P当前组信息,使用callback异步回调。 1376 1377**需要权限:** 1378 1379API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1380 1381API 10起:ohos.permission.GET_WIFI_INFO 1382 1383**系统能力:** SystemCapability.Communication.WiFi.P2P 1384 1385**参数:** 1386 1387| 参数名 | 类型 | 必填 | 说明 | 1388| -------- | -------- | -------- | -------- | 1389| callback | AsyncCallback<[WifiP2pGroupInfo](#wifip2pgroupinfo9)> | 是 | 回调函数。当操作成功时,err为0,data表示当前组信息。如果error为非0,表示处理出现错误。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的deviceAddress为真实设备地址,否则为随机设备地址。 | 1390 1391**错误码:** 1392 1393以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1394 1395| **错误码ID** | **错误信息** | 1396 | -------- | -------- | 1397| 2801000 | Operation failed.| 1398 1399**示例:** 1400```ts 1401 import wifiManager from '@ohos.wifiManager'; 1402 // p2p处于连接状态,才能正常获取到当前组信息 1403 wifiManager.getCurrentGroup((err, data) => { 1404 if (err) { 1405 console.error("get current P2P group error"); 1406 return; 1407 } 1408 console.info("get current P2P group: " + JSON.stringify(data)); 1409 }); 1410 1411 wifiManager.getCurrentGroup().then(data => { 1412 console.info("get current P2P group: " + JSON.stringify(data)); 1413 }); 1414``` 1415 1416## wifiManager.getP2pPeerDevices<sup>9+</sup> 1417 1418getP2pPeerDevices(): Promise<WifiP2pDevice[]> 1419 1420获取P2P对端设备列表信息,使用Promise异步回调。 1421 1422**需要权限:** 1423 1424API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1425 1426API 10起:ohos.permission.GET_WIFI_INFO 1427 1428**系统能力:** SystemCapability.Communication.WiFi.P2P 1429 1430**返回值:** 1431 1432| 类型 | 说明 | 1433| -------- | -------- | 1434| Promise<[WifiP2pDevice[]](#wifip2pdevice9)> | Promise对象。表示对端设备列表信息。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的deviceAddress为真实设备地址,否则为随机设备地址。 | 1435 1436**错误码:** 1437 1438以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1439 1440| **错误码ID** | **错误信息** | 1441 | -------- | -------- | 1442| 2801000 | Operation failed.| 1443 1444## wifiManager.getP2pPeerDevices<sup>9+</sup> 1445 1446getP2pPeerDevices(callback: AsyncCallback<WifiP2pDevice[]>): void 1447 1448获取P2P对端设备列表信息,使用callback异步回调。 1449 1450**需要权限:** 1451 1452API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1453 1454API 10起:ohos.permission.GET_WIFI_INFO 1455 1456**系统能力:** SystemCapability.Communication.WiFi.P2P 1457 1458**参数:** 1459 1460| 参数名 | 类型 | 必填 | 说明 | 1461| -------- | -------- | -------- | -------- | 1462| callback | AsyncCallback<[WifiP2pDevice[]](#wifip2pdevice9)> | 是 | 回调函数。当操作成功时,err为0,data表示对端设备列表信息。如果err为非0,表示处理出现错误。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的deviceAddress为真实设备地址,否则为随机设备地址。 | 1463 1464**错误码:** 1465 1466以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1467 1468| **错误码ID** | **错误信息** | 1469 | -------- | -------- | 1470| 2801000 | Operation failed.| 1471 1472**示例:** 1473```ts 1474 import wifiManager from '@ohos.wifiManager'; 1475 // p2p处于连接状态,才能正常获取到对端设备列表信息 1476 wifiManager.getP2pPeerDevices((err, data) => { 1477 if (err) { 1478 console.error("get P2P peer devices error"); 1479 return; 1480 } 1481 console.info("get P2P peer devices: " + JSON.stringify(data)); 1482 }); 1483 1484 wifiManager.getP2pPeerDevices().then(data => { 1485 console.info("get P2P peer devices: " + JSON.stringify(data)); 1486 }); 1487``` 1488 1489## WifiP2pDevice<sup>9+</sup> 1490 1491表示P2P设备信息。 1492 1493**系统能力:** SystemCapability.Communication.WiFi.P2P 1494 1495| 名称 | 类型 | 可读 | 可写 | 说明 | 1496| -------- | -------- | -------- | -------- | -------- | 1497| deviceName | string | 是 | 否 | 设备名称。 | 1498| deviceAddress | string | 是 | 否 | 设备MAC地址。 | 1499| deviceAddressType<sup>10+</sup> | [DeviceAddressType](#deviceaddresstype10) | 是 | 否 | 设备MAC地址类型。 | 1500| primaryDeviceType | string | 是 | 否 | 主设备类型。 | 1501| deviceStatus | [P2pDeviceStatus](#p2pdevicestatus9) | 是 | 否 | 设备状态。 | 1502| groupCapabilities | number | 是 | 否 | 群组能力。 | 1503 1504 1505## P2pDeviceStatus<sup>9+</sup> 1506 1507表示设备状态的枚举。 1508 1509**系统能力:** SystemCapability.Communication.WiFi.P2P 1510 1511| 名称 | 值 | 说明 | 1512| -------- | -------- | -------- | 1513| CONNECTED | 0 | 连接状态。 | 1514| INVITED | 1 | 邀请状态。 | 1515| FAILED | 2 | 失败状态。 | 1516| AVAILABLE | 3 | 可用状态。 | 1517| UNAVAILABLE | 4 | 不可用状态。 | 1518 1519 1520## wifiManager.getP2pLocalDevice<sup>9+</sup> 1521 1522getP2pLocalDevice(): Promise<WifiP2pDevice> 1523 1524获取P2P本端设备信息,使用Promise异步回调。 1525 1526**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.GET_WIFI_CONFIG 1527 1528**系统能力:** SystemCapability.Communication.WiFi.P2P 1529 1530**返回值:** 1531 1532 | 类型 | 说明 | 1533 | -------- | -------- | 1534 | Promise<[WifiP2pDevice](#wifip2pdevice9)> | Promise对象。表示本端设备信息。 | 1535 1536**错误码:** 1537 1538以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1539 1540| **错误码ID** | **错误信息** | 1541 | -------- | -------- | 1542| 2801000 | Operation failed.| 1543 1544## wifiManager.getP2pLocalDevice<sup>9+</sup> 1545 1546getP2pLocalDevice(callback: AsyncCallback<WifiP2pDevice>): void 1547 1548获取P2P本端设备信息,使用callback异步回调。 1549 1550**需要权限:** ohos.permission.GET_WIFI_INFO 和 ohos.permission.GET_WIFI_CONFIG 1551 1552**系统能力:** SystemCapability.Communication.WiFi.P2P 1553 1554**参数:** 1555 1556 | 参数名 | 类型 | 必填 | 说明 | 1557 | -------- | -------- | -------- | -------- | 1558 | callback | AsyncCallback<[WifiP2pDevice](#wifip2pdevice9)> | 是 | 回调函数。当操作成功时,err为0,data表示本端设备信息。如果error为非0,表示处理出现错误。 | 1559 1560**错误码:** 1561 1562| **错误码ID** | **错误信息** | 1563 | -------- | -------- | 1564| 2801000 | Operation failed.| 1565 1566**示例:** 1567```ts 1568 import wifiManager from '@ohos.wifiManager'; 1569 // p2p处于连接状态,才能正常获取到本端设备信息 1570 wifiManager.getP2pLocalDevice((err, data) => { 1571 if (err) { 1572 console.error("get P2P local device error"); 1573 return; 1574 } 1575 console.info("get P2P local device: " + JSON.stringify(data)); 1576 }); 1577 1578 wifiManager.getP2pLocalDevice().then(data => { 1579 console.info("get P2P local device: " + JSON.stringify(data)); 1580 }); 1581``` 1582 1583## wifiManager.createGroup<sup>9+</sup> 1584 1585createGroup(config: WifiP2PConfig): void 1586 1587创建群组。 1588 1589**需要权限:** ohos.permission.GET_WIFI_INFO 1590 1591**系统能力:** SystemCapability.Communication.WiFi.P2P 1592 1593**参数:** 1594 1595| **参数名** | **类型** | 必填 | **说明** | 1596| -------- | -------- | -------- | -------- | 1597| config | [WifiP2PConfig](#wifip2pconfig9) | 是 | 群组配置信息。如果DeviceAddressType未指定值,则DeviceAddressType默认为随机设备地址类型。 | 1598 1599**错误码:** 1600 1601以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1602 1603| **错误码ID** | **错误信息** | 1604 | -------- | -------- | 1605| 2801000 | Operation failed.| 1606 1607**示例:** 1608```ts 1609 import wifiManager from '@ohos.wifiManager'; 1610 1611 try { 1612 let config:wifiManager.WifiP2PConfig = { 1613 deviceAddress: "****", 1614 netId: 0, 1615 passphrase: "*****", 1616 groupName: "****", 1617 goBand: 0 1618 } 1619 wifiManager.createGroup(config); 1620 1621 }catch(error){ 1622 console.error("failed:" + JSON.stringify(error)); 1623 } 1624``` 1625 1626## WifiP2PConfig<sup>9+</sup> 1627 1628表示P2P配置信息。 1629 1630**系统能力:** SystemCapability.Communication.WiFi.P2P 1631 1632| 名称 | 类型 | 可读 | 可写 | 说明 | 1633| -------- | -------- | -------- | -------- | -------- | 1634| deviceAddress | string | 是 | 否 | 设备地址。 | 1635| deviceAddressType<sup>10+</sup>| [DeviceAddressType](#deviceaddresstype10) | 是 | 否 | 设备地址类型。 | 1636| netId | number | 是 | 否 | 网络ID。创建群组时-1表示创建临时组,-2表示创建永久组。 | 1637| passphrase | string | 是 | 否 | 群组密钥。 | 1638| groupName | string | 是 | 否 | 群组名称。 | 1639| goBand | [GroupOwnerBand](#groupownerband9) | 是 | 否 | 群组带宽。 | 1640 1641 1642## GroupOwnerBand<sup>9+</sup> 1643 1644表示群组带宽的枚举。 1645 1646**系统能力:** SystemCapability.Communication.WiFi.P2P 1647 1648| 名称 | 值 | 说明 | 1649| -------- | -------- | -------- | 1650| GO_BAND_AUTO | 0 | 自动模式。 | 1651| GO_BAND_2GHZ | 1 | 2.4GHZ。 | 1652| GO_BAND_5GHZ | 2 | 5GHZ。 | 1653 1654 1655## wifiManager.removeGroup<sup>9+</sup> 1656 1657removeGroup(): void 1658 1659移除群组。 1660 1661**需要权限:** ohos.permission.GET_WIFI_INFO 1662 1663**系统能力:** SystemCapability.Communication.WiFi.P2P 1664 1665**错误码:** 1666 1667以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1668 1669| **错误码ID** | **错误信息** | 1670 | -------- | -------- | 1671| 2801000 | Operation failed.| 1672 1673**示例:** 1674```ts 1675 import wifiManager from '@ohos.wifiManager'; 1676 1677 try { 1678 wifiManager.removeGroup(); 1679 }catch(error){ 1680 console.error("failed:" + JSON.stringify(error)); 1681 } 1682``` 1683 1684## wifiManager.p2pConnect<sup>9+</sup> 1685 1686p2pConnect(config: WifiP2PConfig): void 1687 1688执行P2P连接。 1689 1690**需要权限:** 1691 1692API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1693 1694API 10起:ohos.permission.GET_WIFI_INFO 1695 1696**系统能力:** SystemCapability.Communication.WiFi.P2P 1697 1698**参数:** 1699 1700| **参数名** | **类型** | 必填 | **说明** | 1701| -------- | -------- | -------- | -------- | 1702| config | [WifiP2PConfig](#wifip2pconfig9) | 是 | 连接配置信息。如果DeviceAddressType未指定值,则DeviceAddressType默认为随机设备地址类型。 | 1703 1704**错误码:** 1705 1706以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1707 1708| **错误码ID** | **错误信息** | 1709 | -------- | -------- | 1710| 2801000 | Operation failed.| 1711 1712**示例:** 1713```ts 1714 import wifiManager from '@ohos.wifiManager'; 1715 1716 let recvP2pConnectionChangeFunc = (result:wifiManager.WifiP2pLinkedInfo) => { 1717 console.info("p2p connection change receive event: " + JSON.stringify(result)); 1718 wifiManager.getP2pLinkedInfo((err, data) => { 1719 if (err) { 1720 console.error('failed to get getP2pLinkedInfo: ' + JSON.stringify(err)); 1721 return; 1722 } 1723 console.info("get getP2pLinkedInfo: " + JSON.stringify(data)); 1724 }); 1725 } 1726 wifiManager.on("p2pConnectionChange", recvP2pConnectionChangeFunc); 1727 1728 let recvP2pDeviceChangeFunc = (result:wifiManager.WifiP2pDevice) => { 1729 console.info("p2p device change receive event: " + JSON.stringify(result)); 1730 } 1731 wifiManager.on("p2pDeviceChange", recvP2pDeviceChangeFunc); 1732 1733 let recvP2pPeerDeviceChangeFunc = (result:wifiManager.WifiP2pDevice[]) => { 1734 console.info("p2p peer device change receive event: " + JSON.stringify(result)); 1735 wifiManager.getP2pPeerDevices((err, data) => { 1736 if (err) { 1737 console.error('failed to get peer devices: ' + JSON.stringify(err)); 1738 return; 1739 } 1740 console.info("get peer devices: " + JSON.stringify(data)); 1741 let len = data.length; 1742 for (let i = 0; i < len; ++i) { 1743 if (data[i].deviceName === "my_test_device") { 1744 console.info("p2p connect to test device: " + data[i].deviceAddress); 1745 let config:wifiManager.WifiP2PConfig = { 1746 deviceAddress:data[i].deviceAddress, 1747 netId:-2, 1748 passphrase:"", 1749 groupName:"", 1750 goBand:0, 1751 } 1752 wifiManager.p2pConnect(config); 1753 } 1754 } 1755 }); 1756 } 1757 wifiManager.on("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc); 1758 1759 let recvP2pPersistentGroupChangeFunc = () => { 1760 console.info("p2p persistent group change receive event"); 1761 1762 wifiManager.getCurrentGroup((err, data) => { 1763 if (err) { 1764 console.error('failed to get current group: ' + JSON.stringify(err)); 1765 return; 1766 } 1767 console.info("get current group: " + JSON.stringify(data)); 1768 }); 1769 } 1770 wifiManager.on("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc); 1771 1772 setTimeout(() => {wifiManager.off("p2pConnectionChange", recvP2pConnectionChangeFunc);}, 125 * 1000); 1773 setTimeout(() => {wifiManager.off("p2pDeviceChange", recvP2pDeviceChangeFunc);}, 125 * 1000); 1774 setTimeout(() => {wifiManager.off("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);}, 125 * 1000); 1775 setTimeout(() => {wifiManager.off("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);}, 125 * 1000); 1776 console.info("start discover devices -> " + wifiManager.startDiscoverDevices()); 1777``` 1778 1779## wifiManager.p2pCancelConnect<sup>9+</sup> 1780 1781p2pCancelConnect(): void 1782 1783取消P2P连接。 1784 1785**需要权限:** ohos.permission.GET_WIFI_INFO 1786 1787**系统能力:** SystemCapability.Communication.WiFi.P2P 1788 1789**错误码:** 1790 1791以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1792 1793| **错误码ID** | **错误信息** | 1794 | -------- | -------- | 1795| 2801000 | Operation failed.| 1796 1797**示例:** 1798```ts 1799 import wifiManager from '@ohos.wifiManager'; 1800 1801 try { 1802 wifiManager.p2pCancelConnect(); 1803 }catch(error){ 1804 console.error("failed:" + JSON.stringify(error)); 1805 } 1806``` 1807 1808## wifiManager.startDiscoverDevices<sup>9+</sup> 1809 1810startDiscoverDevices(): void 1811 1812开始发现设备。 1813 1814**需要权限:** 1815 1816API 9:ohos.permission.GET_WIFI_INFO 和 ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 1817 1818API 10起:ohos.permission.GET_WIFI_INFO 1819 1820**系统能力:** SystemCapability.Communication.WiFi.P2P 1821 1822**错误码:** 1823 1824以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1825 1826| **错误码ID** | **错误信息** | 1827 | -------- | -------- | 1828| 2801000 | Operation failed.| 1829 1830**示例:** 1831```ts 1832 import wifiManager from '@ohos.wifiManager'; 1833 1834 try { 1835 wifiManager.startDiscoverDevices(); 1836 }catch(error){ 1837 console.error("failed:" + JSON.stringify(error)); 1838 } 1839``` 1840 1841## wifiManager.stopDiscoverDevices<sup>9+</sup> 1842 1843stopDiscoverDevices(): void 1844 1845停止发现设备。 1846 1847**需要权限:** ohos.permission.GET_WIFI_INFO 1848 1849**系统能力:** SystemCapability.Communication.WiFi.P2P 1850 1851**错误码:** 1852 1853以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1854 1855| **错误码ID** | **错误信息** | 1856 | -------- | -------- | 1857| 2801000 | Operation failed.| 1858 1859**示例:** 1860```ts 1861 import wifiManager from '@ohos.wifiManager'; 1862 1863 try { 1864 wifiManager.stopDiscoverDevices(); 1865 }catch(error){ 1866 console.error("failed:" + JSON.stringify(error)); 1867 } 1868``` 1869 1870 1871 1872## WifiP2pGroupInfo<sup>9+</sup> 1873 1874表示P2P群组相关信息。 1875 1876**系统能力:** SystemCapability.Communication.WiFi.P2P 1877 1878| 名称 | 类型 | 可读 | 可写 | 说明 | 1879| -------- | -------- | -------- | -------- | -------- | 1880| isP2pGo | boolean | 是 | 否 | 是否是群主。 | 1881| ownerInfo | [WifiP2pDevice](#wifip2pdevice9) | 是 | 否 | 群组的设备信息。 | 1882| passphrase | string | 是 | 否 | 群组密钥。 | 1883| interface | string | 是 | 否 | 接口名称。 | 1884| groupName | string | 是 | 否 | 群组名称。 | 1885| networkId | number | 是 | 否 | 网络ID。 | 1886| frequency | number | 是 | 否 | 群组的频率。 | 1887| clientDevices | [WifiP2pDevice[]](#wifip2pdevice9) | 是 | 否 | 接入的设备列表信息。 | 1888| goIpAddress | string | 是 | 否 | 群组IP地址。 | 1889 1890 1891## wifiManager.on('wifiStateChange')<sup>9+</sup> 1892 1893on(type: "wifiStateChange", callback: Callback<number>): void 1894 1895注册WLAN状态改变事件。 1896 1897**需要权限:** ohos.permission.GET_WIFI_INFO 1898 1899**系统能力:** SystemCapability.Communication.WiFi.STA 1900 1901**参数:** 1902 1903 | **参数名** | **类型** | **必填** | **说明** | 1904 | -------- | -------- | -------- | -------- | 1905 | type | string | 是 | 固定填"wifiStateChange"字符串。 | 1906 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1907 1908**错误码:** 1909 1910以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1911 1912| **错误码ID** | **错误信息** | 1913 | -------- | -------- | 1914| 2501000 | Operation failed.| 1915 1916**状态改变事件的枚举:** 1917 1918| **枚举值** | **说明** | 1919| -------- | -------- | 1920| 0 | 未激活。 | 1921| 1 | 已激活。 | 1922| 2 | 激活中。 | 1923| 3 | 去激活中。 | 1924 1925 1926## wifiManager.off('wifiStateChange')<sup>9+</sup> 1927 1928off(type: "wifiStateChange", callback?: Callback<number>): void 1929 1930取消注册WLAN状态改变事件。 1931 1932**需要权限:** ohos.permission.GET_WIFI_INFO 1933 1934**系统能力:** SystemCapability.Communication.WiFi.STA 1935 1936**参数:** 1937 1938 | **参数名** | **类型** | **必填** | **说明** | 1939 | -------- | -------- | -------- | -------- | 1940 | type | string | 是 | 固定填"wifiStateChange"字符串。 | 1941 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 1942 1943**错误码:** 1944 1945以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1946 1947| **错误码ID** | **错误信息** | 1948 | -------- | -------- | 1949| 2501000 | Operation failed.| 1950 1951**示例:** 1952```ts 1953 import wifiManager from '@ohos.wifiManager'; 1954 1955 let recvPowerNotifyFunc = (result:number) => { 1956 console.info("Receive power state change event: " + result); 1957 } 1958 1959 // Register event 1960 wifiManager.on("wifiStateChange", recvPowerNotifyFunc); 1961 1962 // Unregister event 1963 wifiManager.off("wifiStateChange", recvPowerNotifyFunc); 1964``` 1965 1966 1967## wifiManager.on('wifiConnectionChange')<sup>9+</sup> 1968 1969on(type: "wifiConnectionChange", callback: Callback<number>): void 1970 1971注册WLAN连接状态改变事件。 1972 1973**需要权限:** ohos.permission.GET_WIFI_INFO 1974 1975**系统能力:** SystemCapability.Communication.WiFi.STA 1976 1977**参数:** 1978 1979 | **参数名** | **类型** | **必填** | **说明** | 1980 | -------- | -------- | -------- | -------- | 1981 | type | string | 是 | 固定填"wifiConnectionChange"字符串。 | 1982 | callback | Callback<number> | 是 | 状态改变回调函数。 | 1983 1984**连接状态改变事件的枚举:** 1985 1986| **枚举值** | **说明** | 1987| -------- | -------- | 1988| 0 | 已断开。 | 1989| 1 | 已连接。 | 1990 1991**错误码:** 1992 1993以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 1994 1995| **错误码ID** | **错误信息** | 1996 | -------- | -------- | 1997| 2501000 | Operation failed.| 1998 1999## wifiManager.off('wifiConnectionChange')<sup>9+</sup> 2000 2001off(type: "wifiConnectionChange", callback?: Callback<number>): void 2002 2003取消注册WLAN连接状态改变事件。 2004 2005**需要权限:** ohos.permission.GET_WIFI_INFO 2006 2007**系统能力:** SystemCapability.Communication.WiFi.STA 2008 2009**参数:** 2010 2011 | **参数名** | **类型** | **必填** | **说明** | 2012 | -------- | -------- | -------- | -------- | 2013 | type | string | 是 | 固定填"wifiConnectionChange"字符串。 | 2014 | callback | Callback<number> | 否 | 连接状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2015 2016**错误码:** 2017 2018以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2019 2020| **错误码ID** | **错误信息** | 2021 | -------- | -------- | 2022| 2501000 | Operation failed.| 2023 2024**示例:** 2025```ts 2026 import wifiManager from '@ohos.wifiManager'; 2027 2028 let recvWifiConnectionChangeFunc = (result:number) => { 2029 console.info("Receive wifi connection change event: " + result); 2030 } 2031 2032 // Register event 2033 wifiManager.on("wifiConnectionChange", recvWifiConnectionChangeFunc); 2034 2035 // Unregister event 2036 wifiManager.off("wifiConnectionChange", recvWifiConnectionChangeFunc); 2037``` 2038 2039## wifiManager.on('wifiScanStateChange')<sup>9+</sup> 2040 2041on(type: "wifiScanStateChange", callback: Callback<number>): void 2042 2043注册扫描状态改变事件。 2044 2045**需要权限:** ohos.permission.GET_WIFI_INFO 2046 2047**系统能力:** SystemCapability.Communication.WiFi.STA 2048 2049**参数:** 2050 2051 | **参数名** | **类型** | **必填** | **说明** | 2052 | -------- | -------- | -------- | -------- | 2053 | type | string | 是 | 固定填"wifiScanStateChange"字符串。 | 2054 | callback | Callback<number> | 是 | 状态改变回调函数。 | 2055 2056**扫描状态改变事件的枚举:** 2057 2058| **枚举值** | **说明** | 2059| -------- | -------- | 2060| 0 | 扫描失败。 | 2061| 1 | 扫描成功。 | 2062 2063**错误码:** 2064 2065以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2066 2067| **错误码ID** | **错误信息** | 2068 | -------- | -------- | 2069| 2501000 | Operation failed.| 2070 2071## wifiManager.off('wifiScanStateChange')<sup>9+</sup> 2072 2073off(type: "wifiScanStateChange", callback?: Callback<number>): void 2074 2075取消注册扫描状态改变事件。 2076 2077**需要权限:** ohos.permission.GET_WIFI_INFO 2078 2079**系统能力:** SystemCapability.Communication.WiFi.STA 2080 2081**参数:** 2082 2083| **参数名** | **类型** | **必填** | **说明** | 2084| -------- | -------- | -------- | -------- | 2085| type | string | 是 | 固定填"wifiScanStateChange"字符串。 | 2086| callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2087 2088**错误码:** 2089 2090以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2091 2092| **错误码ID** | **错误信息** | 2093 | -------- | -------- | 2094| 2501000 | Operation failed.| 2095 2096**示例:** 2097```ts 2098 import wifiManager from '@ohos.wifiManager'; 2099 2100 let recvWifiScanStateChangeFunc = (result:number) => { 2101 console.info("Receive Wifi scan state change event: " + result); 2102 } 2103 2104 // Register event 2105 wifiManager.on("wifiScanStateChange", recvWifiScanStateChangeFunc); 2106 2107 // Unregister event 2108 wifiManager.off("wifiScanStateChange", recvWifiScanStateChangeFunc); 2109``` 2110 2111## wifiManager.on('wifiRssiChange')<sup>9+</sup> 2112 2113on(type: "wifiRssiChange", callback: Callback<number>): void 2114 2115注册RSSI状态改变事件。 2116 2117**需要权限:** ohos.permission.GET_WIFI_INFO 2118 2119**系统能力:** SystemCapability.Communication.WiFi.STA 2120 2121**参数:** 2122 2123 | **参数名** | **类型** | **必填** | **说明** | 2124 | -------- | -------- | -------- | -------- | 2125 | type | string | 是 | 固定填"wifiRssiChange"字符串。 | 2126 | callback | Callback<number> | 是 | 状态改变回调函数,返回以dBm为单位的RSSI值。 | 2127 2128**错误码:** 2129 2130以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2131 2132| **错误码ID** | **错误信息** | 2133 | -------- | -------- | 2134| 2501000 | Operation failed.| 2135 2136## wifiManager.off('wifiRssiChange')<sup>9+</sup> 2137 2138off(type: "wifiRssiChange", callback?: Callback<number>): void 2139 2140取消注册RSSI状态改变事件。 2141 2142**需要权限:** ohos.permission.GET_WIFI_INFO 2143 2144**系统能力:** SystemCapability.Communication.WiFi.STA 2145 2146**参数:** 2147 2148| **参数名** | **类型** | **必填** | **说明** | 2149| -------- | -------- | -------- | -------- | 2150| type | string | 是 | 固定填"wifiRssiChange"字符串。 | 2151| callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2152 2153**错误码:** 2154 2155以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2156 2157| **错误码ID** | **错误信息** | 2158 | -------- | -------- | 2159| 2501000 | Operation failed.| 2160 2161**示例:** 2162```ts 2163 import wifiManager from '@ohos.wifiManager'; 2164 2165 let recvWifiRssiChangeFunc = (result:number) => { 2166 console.info("Receive wifi rssi change event: " + result); 2167 } 2168 2169 // Register event 2170 wifiManager.on("wifiRssiChange", recvWifiRssiChangeFunc); 2171 2172 // Unregister event 2173 wifiManager.off("wifiRssiChange", recvWifiRssiChangeFunc); 2174``` 2175 2176## wifiManager.on('hotspotStateChange')<sup>9+</sup> 2177 2178on(type: "hotspotStateChange", callback: Callback<number>): void 2179 2180注册热点状态改变事件。 2181 2182**需要权限:** ohos.permission.GET_WIFI_INFO 2183 2184**系统能力:** SystemCapability.Communication.WiFi.AP.Core 2185 2186**参数:** 2187 2188| **参数名** | **类型** | **必填** | **说明** | 2189| -------- | -------- | -------- | -------- | 2190| type | string | 是 | 固定填"hotspotStateChange"字符串。 | 2191| callback | Callback<number> | 是 | 状态改变回调函数。 | 2192 2193**热点状态改变事件的枚举:** 2194 2195| **枚举值** | **说明** | 2196| -------- | -------- | 2197| 0 | 未激活。 | 2198| 1 | 已激活。 | 2199| 2 | 激活中。 | 2200| 3 | 去激活中。 | 2201 2202**错误码:** 2203 2204以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2205 2206| **错误码ID** | **错误信息** | 2207 | -------- | -------- | 2208| 2601000 | Operation failed.| 2209 2210## wifiManager.off('hotspotStateChange')<sup>9+</sup> 2211 2212off(type: "hotspotStateChange", callback?: Callback<number>): void 2213 2214取消注册热点状态改变事件。 2215 2216**需要权限:** ohos.permission.GET_WIFI_INFO 2217 2218**系统能力:** SystemCapability.Communication.WiFi.AP.Core 2219 2220**参数:** 2221 2222| **参数名** | **类型** | **必填** | **说明** | 2223| -------- | -------- | -------- | -------- | 2224| type | string | 是 | 固定填"hotspotStateChange"字符串。 | 2225| callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2226 2227**错误码:** 2228 2229以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2230 2231| **错误码ID** | **错误信息** | 2232 | -------- | -------- | 2233| 2601000 | Operation failed.| 2234 2235**示例:** 2236```ts 2237 import wifiManager from '@ohos.wifiManager'; 2238 2239 let recvHotspotStateChangeFunc = (result:number) => { 2240 console.info("Receive hotspot state change event: " + result); 2241 } 2242 2243 // Register event 2244 wifiManager.on("hotspotStateChange", recvHotspotStateChangeFunc); 2245 2246 // Unregister event 2247 wifiManager.off("hotspotStateChange", recvHotspotStateChangeFunc); 2248``` 2249 2250 2251## wifiManager.on('p2pStateChange')<sup>9+</sup> 2252 2253on(type: "p2pStateChange", callback: Callback<number>): void 2254 2255注册P2P开关状态改变事件。 2256 2257**需要权限:** ohos.permission.GET_WIFI_INFO 2258 2259**系统能力:** SystemCapability.Communication.WiFi.P2P 2260 2261**参数:** 2262 2263| **参数名** | **类型** | **必填** | **说明** | 2264| -------- | -------- | -------- | -------- | 2265| type | string | 是 | 固定填"p2pStateChange"字符串。 | 2266| callback | Callback<number> | 是 | 状态改变回调函数。 | 2267 2268** P2P状态改变事件的枚举:** 2269 2270| **枚举值** | **说明** | 2271| -------- | -------- | 2272| 1 | 空闲。 | 2273| 2 | 打开中。 | 2274| 3 | 已打开。 | 2275| 4 | 关闭中。 | 2276| 5 | 已关闭。 | 2277 2278**错误码:** 2279 2280以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2281 2282| **错误码ID** | **错误信息** | 2283 | -------- | -------- | 2284| 2801000 | Operation failed.| 2285 2286## wifiManager.off('p2pStateChange')<sup>9+</sup> 2287 2288off(type: "p2pStateChange", callback?: Callback<number>): void 2289 2290取消注册P2P开关状态改变事件。 2291 2292**需要权限:** ohos.permission.GET_WIFI_INFO 2293 2294**系统能力:** SystemCapability.Communication.WiFi.P2P 2295 2296**参数:** 2297 2298 | **参数名** | **类型** | **必填** | **说明** | 2299 | -------- | -------- | -------- | -------- | 2300 | type | string | 是 | 固定填"p2pStateChange"字符串。 | 2301 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2302 2303**错误码:** 2304 2305以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2306 2307| **错误码ID** | **错误信息** | 2308 | -------- | -------- | 2309| 2801000 | Operation failed.| 2310 2311**示例:** 2312```ts 2313 import wifiManager from '@ohos.wifiManager'; 2314 2315 let recvP2pStateChangeFunc = (result:number) => { 2316 console.info("Receive p2p state change event: " + result); 2317 } 2318 2319 // Register event 2320 wifiManager.on("p2pStateChange", recvP2pStateChangeFunc); 2321 2322 // Unregister event 2323 wifiManager.off("p2pStateChange", recvP2pStateChangeFunc); 2324``` 2325 2326## wifiManager.on('p2pConnectionChange')<sup>9+</sup> 2327 2328on(type: "p2pConnectionChange", callback: Callback<WifiP2pLinkedInfo>): void 2329 2330注册P2P连接状态改变事件。 2331 2332**需要权限:** ohos.permission.GET_WIFI_INFO 2333 2334**系统能力:** SystemCapability.Communication.WiFi.P2P 2335 2336**参数:** 2337 2338 | **参数名** | **类型** | **必填** | **说明** | 2339 | -------- | -------- | -------- | -------- | 2340 | type | string | 是 | 固定填"p2pConnectionChange"字符串。 | 2341 | callback | Callback<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | 是 | 状态改变回调函数。 | 2342 2343**错误码:** 2344 2345以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2346 2347| **错误码ID** | **错误信息** | 2348 | -------- | -------- | 2349| 2801000 | Operation failed.| 2350 2351## wifiManager.off('p2pConnectionChange')<sup>9+</sup> 2352 2353off(type: "p2pConnectionChange", callback?: Callback<WifiP2pLinkedInfo>): void 2354 2355取消注册P2P连接状态改变事件。 2356 2357**需要权限:** ohos.permission.GET_WIFI_INFO 2358 2359**系统能力:** SystemCapability.Communication.WiFi.P2P 2360 2361**参数:** 2362 2363 | **参数名** | **类型** | **必填** | **说明** | 2364 | -------- | -------- | -------- | -------- | 2365 | type | string | 是 | 固定填"p2pConnectionChange"字符串。 | 2366 | callback | Callback<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2367 2368**错误码:** 2369 2370以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2371 2372| **错误码ID** | **错误信息** | 2373 | -------- | -------- | 2374| 2801000 | Operation failed.| 2375 2376**示例:** 2377```ts 2378 import wifiManager from '@ohos.wifiManager'; 2379 2380 let recvP2pConnectionChangeFunc = (result:wifiManager.WifiP2pLinkedInfo) => { 2381 console.info("Receive p2p connection change event: " + result); 2382 } 2383 2384 // Register event 2385 wifiManager.on("p2pConnectionChange", recvP2pConnectionChangeFunc); 2386 2387 // Unregister event 2388 wifiManager.off("p2pConnectionChange", recvP2pConnectionChangeFunc); 2389``` 2390 2391## wifiManager.on('p2pDeviceChange')<sup>9+</sup> 2392 2393on(type: "p2pDeviceChange", callback: Callback<WifiP2pDevice>): void 2394 2395注册P2P设备状态改变事件。 2396 2397**需要权限:** 2398 2399API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 2400 2401API 10起:ohos.permission.GET_WIFI_INFO 2402 2403**系统能力:** SystemCapability.Communication.WiFi.P2P 2404 2405**参数:** 2406 2407 | **参数名** | **类型** | **必填** | **说明** | 2408 | -------- | -------- | -------- | -------- | 2409 | type | string | 是 | 固定填"p2pDeviceChange"字符串。 | 2410 | callback | Callback<[WifiP2pDevice](#wifip2pdevice9)> | 是 | 状态改变回调函数。 | 2411 2412**错误码:** 2413 2414以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2415 2416| **错误码ID** | **错误信息** | 2417 | -------- | -------- | 2418| 2801000 | Operation failed.| 2419 2420## wifiManager.off('p2pDeviceChange')<sup>9+</sup> 2421 2422off(type: "p2pDeviceChange", callback?: Callback<WifiP2pDevice>): void 2423 2424取消注册P2P设备状态改变事件。 2425 2426**需要权限:** 2427 2428API 9:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 2429 2430API 10起:无 2431 2432**系统能力:** SystemCapability.Communication.WiFi.P2P 2433 2434**参数:** 2435 2436 | **参数名** | **类型** | **必填** | **说明** | 2437 | -------- | -------- | -------- | -------- | 2438 | type | string | 是 | 固定填"p2pDeviceChange"字符串。 | 2439 | callback | Callback<[WifiP2pDevice](#wifip2pdevice9)> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2440 2441**错误码:** 2442 2443以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2444 2445| **错误码ID** | **错误信息** | 2446 | -------- | -------- | 2447| 2801000 | Operation failed.| 2448 2449**示例:** 2450```ts 2451 import wifiManager from '@ohos.wifiManager'; 2452 2453 let recvP2pDeviceChangeFunc = (result:wifiManager.WifiP2pDevice) => { 2454 console.info("Receive p2p device change event: " + result); 2455 } 2456 2457 // Register event 2458 wifiManager.on("p2pDeviceChange", recvP2pDeviceChangeFunc); 2459 2460 // Unregister event 2461 wifiManager.off("p2pDeviceChange", recvP2pDeviceChangeFunc); 2462``` 2463 2464## wifiManager.on('p2pPeerDeviceChange')<sup>9+</sup> 2465 2466on(type: "p2pPeerDeviceChange", callback: Callback<WifiP2pDevice[]>): void 2467 2468注册P2P对端设备状态改变事件。 2469 2470**需要权限:** 2471 2472API 9:ohos.permission.GET_WIFI_INFO、ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 2473 2474API 10起:ohos.permission.GET_WIFI_INFO 2475 2476**系统能力:** SystemCapability.Communication.WiFi.P2P 2477 2478**参数:** 2479 2480| **参数名** | **类型** | **必填** | **说明** | 2481| -------- | -------- | -------- | -------- | 2482| type | string | 是 | 固定填"p2pPeerDeviceChange"字符串。 | 2483| callback | Callback<[WifiP2pDevice[]](#wifip2pdevice9)> | 是 | 状态改变回调函数。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的deviceAddress为真实设备地址,否则为随机设备地址。 | 2484 2485**错误码:** 2486 2487以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2488 2489| **错误码ID** | **错误信息** | 2490 | -------- | -------- | 2491| 2801000 | Operation failed.| 2492 2493## wifiManager.off('p2pPeerDeviceChange')<sup>9+</sup> 2494 2495off(type: "p2pPeerDeviceChange", callback?: Callback<WifiP2pDevice[]>): void 2496 2497取消注册P2P对端设备状态改变事件。 2498 2499**需要权限:** 2500 2501API 9:ohos.permission.LOCATION 和 ohos.permission.APPROXIMATELY_LOCATION 2502 2503API 10起:无 2504 2505**系统能力:** SystemCapability.Communication.WiFi.P2P 2506 2507**参数:** 2508 2509| **参数名** | **类型** | **必填** | **说明** | 2510| -------- | -------- | -------- | -------- | 2511| type | string | 是 | 固定填"p2pPeerDeviceChange"字符串。 | 2512| callback | Callback<[WifiP2pDevice[]](#wifip2pdevice9)> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。如果应用申请了ohos.permission.GET_WIFI_PEERS_MAC权限,则返回结果中的deviceAddress为真实设备地址,否则为随机设备地址。 | 2513 2514**错误码:** 2515 2516以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2517 2518| **错误码ID** | **错误信息** | 2519 | -------- | -------- | 2520| 2801000 | Operation failed.| 2521 2522**示例:** 2523```ts 2524 import wifiManager from '@ohos.wifiManager'; 2525 2526 let recvP2pPeerDeviceChangeFunc = (result:wifiManager.WifiP2pDevice[]) => { 2527 console.info("Receive p2p peer device change event: " + result); 2528 } 2529 2530 // Register event 2531 wifiManager.on("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc); 2532 2533 // Unregister event 2534 wifiManager.off("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc); 2535``` 2536 2537## wifiManager.on('p2pPersistentGroupChange')<sup>9+</sup> 2538 2539on(type: "p2pPersistentGroupChange", callback: Callback<void>): void 2540 2541注册P2P永久组状态改变事件。 2542 2543**需要权限:** ohos.permission.GET_WIFI_INFO 2544 2545**系统能力:** SystemCapability.Communication.WiFi.P2P 2546 2547**参数:** 2548 2549 | **参数名** | **类型** | **必填** | **说明** | 2550 | -------- | -------- | -------- | -------- | 2551 | type | string | 是 | 固定填"p2pPersistentGroupChange"字符串。 | 2552 | callback | Callback<void> | 是 | 状态改变回调函数。 | 2553 2554**错误码:** 2555 2556以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2557 2558| **错误码ID** | **错误信息** | 2559 | -------- | -------- | 2560| 2801000 | Operation failed.| 2561 2562## wifiManager.off('p2pPersistentGroupChange')<sup>9+</sup> 2563 2564off(type: "p2pPersistentGroupChange", callback?: Callback<void>): void 2565 2566取消注册P2P永久组状态改变事件。 2567 2568**需要权限:** ohos.permission.GET_WIFI_INFO 2569 2570**系统能力:** SystemCapability.Communication.WiFi.P2P 2571 2572**参数:** 2573 2574| **参数名** | **类型** | **必填** | **说明** | 2575| -------- | -------- | -------- | -------- | 2576| type | string | 是 | 固定填"p2pPersistentGroupChange"字符串。 | 2577| callback | Callback<void> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2578 2579**错误码:** 2580 2581以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2582 2583| **错误码ID** | **错误信息** | 2584 | -------- | -------- | 2585| 2801000 | Operation failed.| 2586 2587**示例:** 2588```ts 2589 import wifiManager from '@ohos.wifiManager'; 2590 2591 let recvP2pPersistentGroupChangeFunc = (result:void) => { 2592 console.info("Receive p2p persistent group change event: " + result); 2593 } 2594 2595 // Register event 2596 wifiManager.on("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc); 2597 2598 // Unregister event 2599 wifiManager.off("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc); 2600``` 2601 2602## wifiManager.on('p2pDiscoveryChange')<sup>9+</sup> 2603 2604on(type: "p2pDiscoveryChange", callback: Callback<number>): void 2605 2606注册发现设备状态改变事件。 2607 2608**需要权限:** ohos.permission.GET_WIFI_INFO 2609 2610**系统能力:** SystemCapability.Communication.WiFi.P2P 2611 2612**参数:** 2613 2614 | **参数名** | **类型** | **必填** | **说明** | 2615 | -------- | -------- | -------- | -------- | 2616 | type | string | 是 | 固定填"p2pDiscoveryChange"字符串。 | 2617 | callback | Callback<number> | 是 | 状态改变回调函数。 | 2618 2619**发现设备状态改变事件的枚举:** 2620 2621| **枚举值** | **说明** | 2622| -------- | -------- | 2623| 0 | 初始状态。 | 2624| 1 | 发现成功。 | 2625 2626**错误码:** 2627 2628以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2629 2630| **错误码ID** | **错误信息** | 2631 | -------- | -------- | 2632| 2801000 | Operation failed.| 2633 2634## wifiManager.off('p2pDiscoveryChange')<sup>9+</sup> 2635 2636off(type: "p2pDiscoveryChange", callback?: Callback<number>): void 2637 2638取消注册发现设备状态改变事件。 2639 2640**需要权限:** ohos.permission.GET_WIFI_INFO 2641 2642**系统能力:** SystemCapability.Communication.WiFi.P2P 2643 2644**参数:** 2645 2646 | **参数名** | **类型** | **必填** | **说明** | 2647 | -------- | -------- | -------- | -------- | 2648 | type | string | 是 | 固定填"p2pDiscoveryChange"字符串。 | 2649 | callback | Callback<number> | 否 | 状态改变回调函数。如果callback不填,将取消注册该事件关联的所有回调函数。 | 2650 2651**错误码:** 2652 2653以下错误码的详细介绍请参见[WIFI错误码](errorcode-wifi.md)。 2654 2655| **错误码ID** | **错误信息** | 2656 | -------- | -------- | 2657| 2801000 | Operation failed.| 2658 2659**示例:** 2660```ts 2661 import wifiManager from '@ohos.wifiManager'; 2662 2663 let recvP2pDiscoveryChangeFunc = (result:number) => { 2664 console.info("Receive p2p discovery change event: " + result); 2665 } 2666 2667 // Register event 2668 wifiManager.on("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc); 2669 2670 // Unregister event 2671 wifiManager.off("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc); 2672```