# @ohos.wifiManager (WLAN)
The **wifiManager** module provides basic WLAN functionalities (such as wireless access, wireless encryption, and wireless roaming), basic peer-to-peer (P2P) services, and WLAN notification services. It allows applications to interact with other devices through WLAN.
> **NOTE**
> The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version.
## Modules to Import
```ts
import { wifiManager } from '@kit.ConnectivityKit';
```
## wifiManager.isWifiActive9+
isWifiActive(): boolean
Checks whether WLAN is enabled.
**Atomic service API**: This API can be used in atomic services since API version 11.
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| boolean | Returns **true** if WLAN is enabled; returns **false** otherwise.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let isWifiActive = wifiManager.isWifiActive();
console.info("isWifiActive:" + isWifiActive);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.scan9+(deprecated)
scan(): void
Starts WLAN scanning. Note that WLAN must have been enabled.
> **NOTE**
> This API is supported since API version 9 and deprecated since API version 10. The substitute API is available only for system applications.
**Required permissions**: ohos.permission.SET_WIFI_INFO, ohos.permission.LOCATION, and ohos.permission.APPROXIMATELY_LOCATION
**System capability**: SystemCapability.Communication.WiFi.STA
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
wifiManager.scan();
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.getScanResults9+(deprecated)
getScanResults(): Promise<Array<WifiScanInfo>>
Obtains the scan result. This API uses a promise to return the result.
> **NOTE**
> This API is supported since API version 9 and deprecated since API version 10. Use [wifiManager.getScanInfoList](#wifimanagergetscaninfolist10) instead.
**Required permissions**: ohos.permission.GET_WIFI_INFO and (ohos.permission.GET_WIFI_PEERS_MAC or (ohos.permission.LOCATION and ohos.permission.APPROXIMATELY_LOCATION))
ohos.permission.GET_WIFI_PEERS_MAC is available only for system applications.
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| Promise< Array<[WifiScanInfo](#wifiscaninfo9)> > | Promise used to return the hotspots detected.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
## wifiManager.getScanResults9+(deprecated)
getScanResults(callback: AsyncCallback<Array<WifiScanInfo>>): void
Obtains the scan result. This API uses an asynchronous callback to return the result.
> **NOTE**
> This API is supported since API version 9 and deprecated since API version 10. Use [wifiManager.getScanInfoList](#wifimanagergetscaninfolist10) instead.
**Required permissions**: ohos.permission.GET_WIFI_INFO and (ohos.permission.GET_WIFI_PEERS_MAC or (ohos.permission.LOCATION and ohos.permission.APPROXIMATELY_LOCATION))
ohos.permission.GET_WIFI_PEERS_MAC is available only for system applications.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback< Array<[WifiScanInfo](#wifiscaninfo9)>> | Yes| Callback used to return the result. If the operation is successful, **err** is **0** and **data** is the detected hotspots. Otherwise, **err** is a non-zero value and **data** is empty.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
wifiManager.getScanResults((err, result) => {
if (err) {
console.error("get scan info error");
return;
}
let len = result.length;
console.log("wifi received scan info: " + len);
for (let i = 0; i < len; ++i) {
console.info("ssid: " + result[i].ssid);
console.info("bssid: " + result[i].bssid);
console.info("capabilities: " + result[i].capabilities);
console.info("securityType: " + result[i].securityType);
console.info("rssi: " + result[i].rssi);
console.info("band: " + result[i].band);
console.info("frequency: " + result[i].frequency);
console.info("channelWidth: " + result[i].channelWidth);
console.info("timestamp: " + result[i].timestamp);
}
});
wifiManager.getScanResults().then(result => {
let len = result.length;
console.log("wifi received scan info: " + len);
for (let i = 0; i < len; ++i) {
console.info("ssid: " + result[i].ssid);
console.info("bssid: " + result[i].bssid);
console.info("capabilities: " + result[i].capabilities);
console.info("securityType: " + result[i].securityType);
console.info("rssi: " + result[i].rssi);
console.info("band: " + result[i].band);
console.info("frequency: " + result[i].frequency);
console.info("channelWidth: " + result[i].channelWidth);
console.info("timestamp: " + result[i].timestamp);
}
}).catch((err:number) => {
console.error("failed:" + JSON.stringify(err));
});
```
## wifiManager.getScanResultsSync9+(deprecated)
getScanResultsSync(): Array<[WifiScanInfo](#wifiscaninfo9)>
Obtains the scan result. This API returns the result synchronously.
> **NOTE**
> This API is supported since API version 9 and deprecated since API version 10. Use [wifiManager.getScanInfoList](#wifimanagergetscaninfolist10) instead.
**Required permissions**: ohos.permission.GET_WIFI_INFO and (ohos.permission.GET_WIFI_PEERS_MAC or (ohos.permission.LOCATION and ohos.permission.APPROXIMATELY_LOCATION))
ohos.permission.GET_WIFI_PEERS_MAC is available only for system applications.
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| Array<[WifiScanInfo](#wifiscaninfo9)> | Scan result obtained.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let scanInfoList = wifiManager.getScanResultsSync();
console.info("scanInfoList:" + JSON.stringify(scanInfoList));
let len = scanInfoList.length;
console.log("wifi received scan info: " + len);
if(len > 0){
for (let i = 0; i < len; ++i) {
console.info("ssid: " + scanInfoList[i].ssid);
console.info("bssid: " + scanInfoList[i].bssid);
console.info("capabilities: " + scanInfoList[i].capabilities);
console.info("securityType: " + scanInfoList[i].securityType);
console.info("rssi: " + scanInfoList[i].rssi);
console.info("band: " + scanInfoList[i].band);
console.info("frequency: " + scanInfoList[i].frequency);
console.info("channelWidth: " + scanInfoList[i].channelWidth);
console.info("timestamp: " + scanInfoList[i].timestamp);
}
}
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.getScanInfoList10+
getScanInfoList(): Array<WifiScanInfo>
Obtains the scanning result.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| Array<[WifiScanInfo](#wifiscaninfo9)> | Hotspots detected. If the caller has the ohos.permission.GET_WIFI_PEERS_MAC permission (available only for system applications), **bssid** in the return value is a real device address. Otherwise, **bssid** is a random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let scanInfoList = wifiManager.getScanInfoList();
console.info("scanInfoList:" + JSON.stringify(scanInfoList));
let len = scanInfoList.length;
console.log("wifi received scan info: " + len);
if(len > 0){
for (let i = 0; i < len; ++i) {
console.info("ssid: " + scanInfoList[i].ssid);
console.info("bssid: " + scanInfoList[i].bssid);
console.info("capabilities: " + scanInfoList[i].capabilities);
console.info("securityType: " + scanInfoList[i].securityType);
console.info("rssi: " + scanInfoList[i].rssi);
console.info("band: " + scanInfoList[i].band);
console.info("frequency: " + scanInfoList[i].frequency);
console.info("channelWidth: " + scanInfoList[i].channelWidth);
console.info("timestamp: " + scanInfoList[i].timestamp);
console.info("supportedWifiCategory: " + scanInfoList[i].supportedWifiCategory);
console.info("isHiLinkNetwork: " + scanInfoList[i].isHiLinkNetwork);
}
}
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## WifiScanInfo9+
Represents WLAN hotspot information.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Type**| **Readable**| **Writable**| **Description**|
| -------- | -------- | -------- | -------- | -------- |
| ssid | string | Yes| No| Service set identifier (SSID) of the hotspot, in UTF-8 format. The maximum length is 32 bytes.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| bssid | string | Yes| No| Basic service set identifier (BSSID) of the hotspot, for example, **00:11:22:33:44:55**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| bssidType10+| [DeviceAddressType](#deviceaddresstype10) | Yes| No| BSSID type of the hotspot.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| capabilities | string | Yes| No| Hotspot capabilities.|
| securityType | [WifiSecurityType](#wifisecuritytype9) | Yes| No| WLAN security type.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| rssi | number | Yes| No| Received signal strength indicator (RSSI) of the hotspot, in dBm.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| band | number | Yes| No| Frequency band of the WLAN access point (AP). The value **1** indicates 2.4 GHz, and **2** indicates 5 GHz.|
| frequency | number | Yes| No| Frequency of the WLAN AP.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| channelWidth | number | Yes| No| Channel width of the WLAN AP. For details, see [WifiChannelWidth](#wifichannelwidth9).|
| centerFrequency0 | number | Yes| No| Center frequency of the hotspot.|
| centerFrequency1 | number | Yes| No| Center frequency of the hotspot. If the hotspot uses two non-overlapping WLAN channels, two center frequencies, namely **centerFrequency0** and **centerFrequency1**, are returned.|
| infoElems | Array<[WifiInfoElem](#wifiinfoelem9)> | Yes| No| Information elements.|
| timestamp | number | Yes| No| Timestamp.|
| supportedWifiCategory12+ | [WifiCategory](#wificategory12) | Yes| No| Highest Wi-Fi category supported by the hotspot.|
| isHiLinkNetwork12+ | boolean | Yes| No| Whether the hotspot supports HiLink. The value **true** indicates that the hotspot supports HiLink. The value **false** means the opposite.|
## DeviceAddressType10+
Enumerates the Wi-Fi device address (MAC/BSSID) types.
**System capability**: SystemCapability.Communication.WiFi.Core
**Atomic service API**: This API can be used in atomic services since API version 12.
| **Name**| **Value**| **Description**|
| -------- | -------- | -------- |
| RANDOM_DEVICE_ADDRESS | 0 | Random device address.|
| REAL_DEVICE_ADDRESS | 1 | Read device address.|
## WifiSecurityType9+
Enumerates the WLAN security types.
**System capability**: SystemCapability.Communication.WiFi.Core
| **Name**| **Value**| **Description**|
| -------- | -------- | -------- |
| WIFI_SEC_TYPE_INVALID | 0 | Invalid security type.|
| WIFI_SEC_TYPE_OPEN | 1 | Open security type.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| WIFI_SEC_TYPE_WEP | 2 | Wired Equivalent Privacy (WEP). This type is not supported by the candidate network configuration (**addCandidateConfig**).|
| WIFI_SEC_TYPE_PSK | 3 | Pre-shared key (PSK).|
| WIFI_SEC_TYPE_SAE | 4 | Simultaneous Authentication of Equals (SAE).|
| WIFI_SEC_TYPE_EAP | 5 | Extensible Authentication Protocol (EAP).|
| WIFI_SEC_TYPE_EAP_SUITE_B | 6 | Suite B 192-bit encryption.|
| WIFI_SEC_TYPE_OWE | 7 | Opportunistic Wireless Encryption (OWE).|
| WIFI_SEC_TYPE_WAPI_CERT | 8 | WLAN Authentication and Privacy Infrastructure (WAPI) in certificate-based mode (WAPI-CERT).|
| WIFI_SEC_TYPE_WAPI_PSK | 9 | WAPI-PSK.|
## WifiBandType10+
Enumerates the Wi-Fi band types.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Value**| **Description**|
| -------- | -------- | -------- |
| WIFI_BAND_NONE | 0 | Invalid band type|
| WIFI_BAND_2G | 1 | 2.4 GHz|
| WIFI_BAND_5G | 2 | 5 GHz|
| WIFI_BAND_6G | 3 | 6 GHz|
| WIFI_BAND_60G | 4 | 60 GHz|
## WifiStandard10+
Enumerates the Wi-Fi standards.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Value**| **Description**|
| -------- | -------- | -------- |
| WIFI_STANDARD_UNDEFINED | 0 | Invalid Wi-Fi standard|
| WIFI_STANDARD_11A | 1 | 802.11a|
| WIFI_STANDARD_11B | 2 | 802.11b|
| WIFI_STANDARD_11G | 3 | 802.11g|
| WIFI_STANDARD_11N | 4 | 802.11n|
| WIFI_STANDARD_11AC | 5 | 802.11ac|
| WIFI_STANDARD_11AX | 6 | 802.11ax|
| WIFI_STANDARD_11AD | 7 | 802.11ad|
## WifiInfoElem9+
Represents a WLAN information element.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Type**| **Readable**| **Writable**| **Description**|
| -------- | -------- | -------- | -------- | -------- |
| eid | number | Yes| No| ID of the information element.|
| content | Uint8Array | Yes| No| Content of the information element.|
## WifiChannelWidth9+
Enumerates the WLAN channel widths.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Value**| **Description**|
| -------- | -------- | -------- |
| WIDTH_20MHZ | 0 | 20 MHz|
| WIDTH_40MHZ | 1 | 40 MHz|
| WIDTH_80MHZ | 2 | 80 MHz|
| WIDTH_160MHZ | 3 | 160 MHz|
| WIDTH_80MHZ_PLUS | 4 | 80 MHz+|
| WIDTH_INVALID | 5 | Invalid value|
## WifiDeviceConfig9+
Represents the WLAN configuration.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Type**| **Readable**| **Writable**| **Description**|
| -------- | -------- | -------- | -------- | -------- |
| ssid | string | Yes| No| Service set identifier (SSID) of the hotspot, in UTF-8 format. The maximum length is 32 bytes.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| bssid | string | Yes| No| Basic service set identifier (BSSID) of the hotspot, for example, **00:11:22:33:44:55**.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| bssidType10+ | [DeviceAddressType](#deviceaddresstype10) | Yes| No| BSSID type of the hotspot.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| preSharedKey | string | Yes| No| PSK of the hotspot, which cannot exceed 64 bytes.
When **securityType** is **WIFI_SEC_TYPE_OPEN**, this parameter must be an empty string. When **securityType** is any other value, this parameter cannot be empty.
When **securityType** is **WIFI_SEC_TYPE_WEP**, the PSK must be of 5, 10, 13, 26, 16, or 32 bytes. If the PSK length is 10, 26, 16, or 32 bytes, the PSK must be a hexadecimal number.
When **securityType** is **WIFI_SEC_TYPE_SAE**, the minimum PSK length is 1 byte.
When **securityType** is **WIFI_SEC_TYPE_PSK**, the minimum PSK length is 8 bytes.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| isHiddenSsid | boolean | Yes| No| Whether the network is hidden.|
| securityType | [WifiSecurityType](#wifisecuritytype9)| Yes| No| Security type.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| eapConfig10+ | [WifiEapConfig](#wifieapconfig10) | Yes| No| EAP configuration. This parameter is mandatory only when **securityType** is **WIFI_SEC_TYPE_EAP**.|
| wapiConfig12+ | [WifiWapiConfig](#wifiwapiconfig12) | Yes| No| WAPI configuration. This parameter is mandatory only when **securityType** is **WIFI_SEC_TYPE_WAPI_CERT** or** WIFI_SEC_TYPE_WAPI_PSK**.|
## WifiEapConfig10+
Represents EAP configuration information.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Type**| **Readable**| **Writable**| **Description**|
| -------- | -------- | -------- | -------- | -------- |
| eapMethod | [EapMethod](#eapmethod10) | Yes| No| EAP authentication method.|
| phase2Method | [Phase2Method](#phase2method10) | Yes| No| Phase 2 authentication method. This parameter is mandatory only when **eapMethod** is **EAP_PEAP** or **EAP_TTLS**.|
| identity | string | Yes| No| Identity Information. When **eapMethod** is **EAP_PEAP**, **EAP_TLS**, or **EAP_PWD**, this parameter cannot be empty.|
| anonymousIdentity | string | Yes| No| Anonymous identity. This parameter is not used currently.|
| password | string | Yes| No| Password. When **eapMethod** is **EAP_PEAP** or **EAP_PWD**, this parameter cannot be empty.|
| caCertAlias | string | Yes| No| CA certificate alias.|
| caPath | string | Yes| No| CA certificate path.|
| clientCertAlias | string | Yes| No| Client certificate alias.|
| certEntry | Uint8Array | Yes| Yes| CA certificate content. If **eapMethod** is **EAP_TLS** and this parameter is not specified, **clientCertAlias** cannot be empty.|
| certPassword | string | Yes| Yes| CA certificate password.|
| altSubjectMatch | string | Yes| No| A string to match the alternate subject.|
| domainSuffixMatch | string | Yes| No| A string to match the domain suffix.|
| realm | string | Yes| No| Realm for the passpoint credential.|
| plmn | string | Yes| No| Public land mobile network (PLMN) of the passpoint credential provider.|
| eapSubId | number | Yes| No| Sub-ID of the SIM card.|
## WifiWapiConfig12+
Represents WAPI configuration.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Type**| **Readable**| **Writable**| **Description**|
| -------- | -------- | -------- | -------- | -------- |
| wapiPskType | [WapiPskType](#wapipsktype12)| Yes| Yes| PSK type.|
| wapiAsCert | string | No| Yes| AS certificate.|
| wapiUserCert | string | No| Yes| User Certificate.|
## WapiPskType12+
Enumerates the WAPI authentication types.
**System capability**: SystemCapability.Communication.WiFi.Core
| Name| Value| Description|
| -------- | -------- | -------- |
| WAPI_PSK_ASCII | 0 | ASCII.|
| WAPI_PSK_HEX | 1 | HEX.|
## EapMethod10+
Enumerates the EAP authentication methods.
**System capability**: SystemCapability.Communication.WiFi.STA
| Name| Value| Description|
| -------- | -------- | -------- |
| EAP_NONE | 0 | Not specified.|
| EAP_PEAP | 1 | PEAP.|
| EAP_TLS | 2 | TLS.|
| EAP_TTLS | 3 | TTLS.|
| EAP_PWD | 4 | Password.|
| EAP_SIM | 5 | SIM.|
| EAP_AKA | 6 | AKA.|
| EAP_AKA_PRIME | 7 | AKA Prime.|
| EAP_UNAUTH_TLS | 8 | UNAUTH TLS.|
## Phase2Method10+
Enumerates the Phase 2 authentication methods.
**System capability**: SystemCapability.Communication.WiFi.STA
| Name| Value| Description|
| -------- | -------- | -------- |
| PHASE2_NONE | 0 | Not specified.|
| PHASE2_PAP | 1 | PAP.|
| PHASE2_MSCHAP | 2 | MS-CHAP.|
| PHASE2_MSCHAPV2 | 3 | MS-CHAPv2.|
| PHASE2_GTC | 4 | GTC.|
| PHASE2_SIM | 5 | SIM.|
| PHASE2_AKA | 6 | AKA.|
| PHASE2_AKA_PRIME | 7 | AKA Prime.|
## WifiCategory12+
Represents the highest Wi-Fi type supported by a hotspot.
**System capability**: SystemCapability.Communication.WiFi.STA
| Name| Value| Description|
| -------- | -------- | -------- |
| DEFAULT | 1 | Default, that is, Wi-Fi types lower than Wi-Fi 6.|
| WIFI6 | 2 | Wi-Fi 6|
| WIFI6_PLUS | 3 | Wi-Fi 6+|
## wifiManager.addCandidateConfig9+
addCandidateConfig(config: WifiDeviceConfig): Promise<number>
Adds the candidate network configuration. This API uses a promise to return the result. Before using this API, ensure that WLAN is enabled.
**Required permissions**: ohos.permission.SET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| config | [WifiDeviceConfig](#wifideviceconfig9) | Yes| WLAN configuration to add. The default **bssidType** is random device address.|
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| Promise<number> | Promise used to return the network configuration ID.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. 3. Parameter verification failed.|
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
`````ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let config:wifiManager.WifiDeviceConfig = {
ssid : "****",
preSharedKey : "****",
securityType : 0
}
wifiManager.addCandidateConfig(config).then(result => {
console.info("result:" + JSON.stringify(result));
}).catch((err:number) => {
console.error("failed:" + JSON.stringify(err));
});
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
`````
## wifiManager.addCandidateConfig9+
addCandidateConfig(config: WifiDeviceConfig, callback: AsyncCallback<number>): void
Adds the configuration of a candidate network. This API uses an asynchronous callback to return the result.
**Required permissions**: ohos.permission.SET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Atomic service API**: This API can be used in atomic services since API version 12.
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| config | [WifiDeviceConfig](#wifideviceconfig9) | Yes| WLAN configuration to add. The default **bssidType** is random device address.|
| callback | AsyncCallback<number> | Yes| Callback used to return the result. If the operation is successful, **err** is **0** and **data** is the network configuration ID. If **data** is **-1**, the operation has failed. If **err** is not **0**, an error has occurred.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. 3. Parameter verification failed.|
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
`````ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let config:wifiManager.WifiDeviceConfig = {
ssid : "****",
preSharedKey : "****",
securityType : 0
}
wifiManager.addCandidateConfig(config,(error,result) => {
console.info("result:" + JSON.stringify(result));
});
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
`````
## wifiManager.removeCandidateConfig9+
removeCandidateConfig(networkId: number): Promise<void>
Removes the configuration of a candidate network. This API uses a promise to return the result.
**Required permissions**: ohos.permission.SET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| networkId | number | Yes| ID of the network configuration to remove.|
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| Promise<void> | Promise used to return the result.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. 3. Parameter verification failed.|
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
| 2501001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let networkId = 0;
wifiManager.removeCandidateConfig(networkId).then(result => {
console.info("result:" + JSON.stringify(result));
}).catch((err:number) => {
console.error("failed:" + JSON.stringify(err));
});
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.removeCandidateConfig9+
removeCandidateConfig(networkId: number, callback: AsyncCallback<void>): void
Removes the configuration of a candidate network. This API uses an asynchronous callback to return the result.
**Required permissions**: ohos.permission.SET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Atomic service API**: This API can be used in atomic services since API version 12.
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| networkId | number | Yes| ID of the network configuration to remove.|
| callback | AsyncCallback<void> | Yes| Callback used to return the result. If the operation is successful, **err** is **0**. If the operation fails, **error** is not **0**.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. 3. Parameter verification failed. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
| 2501001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let networkId = 0;
wifiManager.removeCandidateConfig(networkId,(error,result) => {
console.info("result:" + JSON.stringify(result));
});
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.getCandidateConfigs9+
getCandidateConfigs(): Array<WifiDeviceConfig>
Obtains candidate network configuration.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| Array<[WifiDeviceConfig](#wifideviceconfig9)> | Candidate network configuration obtained.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let configs = wifiManager.getCandidateConfigs();
console.info("configs:" + JSON.stringify(configs));
let len = configs.length;
console.log("result len: " + len);
if(len > 0){
for (let i = 0; i < len; ++i) {
console.info("ssid: " + configs[i].ssid);
console.info("bssid: " + configs[i].bssid);
}
}
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.connectToCandidateConfig9+
connectToCandidateConfig(networkId: number): void
Connects to a candidate network added by the application. If the device is already connected to a hotspot, disconnect it from the hotspot first.
**Required permissions**: ohos.permission.SET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| networkId | number | Yes| ID of the candidate network configuration.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. 3. Parameter verification failed. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
| 2501001 | Wi-Fi STA disabled.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let networkId = 0; // Candidate network ID, which is generated when a candidate network is added. The value is obtained from WifiDeviceConfig.netId.
wifiManager.connectToCandidateConfig(networkId);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.getSignalLevel9+
getSignalLevel(rssi: number, band: number): number
Obtains the WLAN signal level.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| rssi | number | Yes| RSSI of the hotspot, in dBm.|
| band | number | Yes| Frequency band of the WLAN AP. The value **1** indicates 2.4 GHz, and **2** indicates 5 GHz.|
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| number | Signal level obtained. The value range is [0, 4].|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let rssi = 0;
let band = 0;
let level = wifiManager.getSignalLevel(rssi,band);
console.info("level:" + JSON.stringify(level));
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.getLinkedInfo9+
getLinkedInfo(): Promise<WifiLinkedInfo>
Obtains WLAN connection information. This API uses a promise to return the result.
**Required permissions**: ohos.permission.GET_WIFI_INFO
If **macType** to be obtained is **1** (device MAC address), the caller must have the ohos.permission.GET_WIFI_LOCAL_MAC permission, which is available only for system applications. Without this permission, a random MAC address is returned in **macAddress**.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| Type| Description|
| -------- | -------- |
| Promise<[WifiLinkedInfo](#wifilinkedinfo9)> | Promise used to return the WLAN connection information.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
| 2501001 | Wi-Fi STA disabled.|
## wifiManager.getLinkedInfo9+
getLinkedInfo(callback: AsyncCallback<WifiLinkedInfo>): void
Obtains WLAN connection information. This API uses an asynchronous callback to return the result.
**Required permissions**: ohos.permission.GET_WIFI_INFO
If **macType** to be obtained is **1** (device MAC address), the caller must have the ohos.permission.GET_WIFI_LOCAL_MAC permission, which is available only for system applications. Without this permission, a random MAC address is returned in **macAddress**.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback<[WifiLinkedInfo](#wifilinkedinfo9)> | Yes| Callback used to return the result. If the operation is successful, **err** is **0** and **data** is the WLAN connection information obtained. If the operation fails, **err** is not **0**.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
| 2501001 | Wi-Fi STA disabled.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
wifiManager.getLinkedInfo((err, data:wifiManager.WifiLinkedInfo) => {
if (err) {
console.error("get linked info error");
return;
}
console.info("get wifi linked info: " + JSON.stringify(data));
});
wifiManager.getLinkedInfo().then(data => {
console.info("get wifi linked info: " + JSON.stringify(data));
}).catch((error:number) => {
console.info("get linked info error");
});
```
## WifiLinkedInfo9+
Represents the WLAN connection information.
**System capability**: SystemCapability.Communication.WiFi.STA
| Name| Type| Readable| Writable| Description|
| -------- | -------- | -------- | -------- | -------- |
| ssid | string | Yes| No| SSID of the hotspot, in UTF-8 format.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| bssid | string | Yes| No| BSSID of the hotspot.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| rssi | number | Yes| No| Received signal strength indicator (RSSI) of the hotspot, in dBm.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| band | number | Yes| No| Frequency band of the WLAN AP. The value **1** indicates 2.4 GHz, and **2** indicates 5 GHz.|
| linkSpeed | number | Yes| No| Uplink speed of the WLAN AP, in Mbps/s.|
| rxLinkSpeed10+ | number | Yes| No| Downlink speed of the WLAN AP, in Mbps/s.|
| maxSupportedTxLinkSpeed10+ | number | Yes| No| Maximum uplink speed supported, in Mbps/s.|
| maxSupportedRxLinkSpeed10+ | number | Yes| No| Maximum downlink speed supported, in Mbps/s.|
| frequency | number | Yes| No| Frequency of the WLAN AP.
**Atomic service API**: This API can be used in atomic services since API version 12.|
| isHidden | boolean | Yes| No| Whether to hide the WLAN AP.|
| isRestricted | boolean | Yes| No| Whether to restrict data volume at the WLAN AP.|
| macType | number | Yes| No| MAC address type.
The value **0** indicates random MAC address, and **1** indicates device MAC address.|
| macAddress | string | Yes| No| MAC address of the device.|
| ipAddress | number | Yes| No| IP address of the device that sets up the WLAN connection (the Wi-Fi connection information and the status information of the local device can be viewed.)|
| connState | [ConnState](#connstate9) | Yes| No| WLAN connection state.|
| channelWidth10+ | [WifiChannelWidth](#wifichannelwidth9) | Yes| No| Channel bandwidth of the connected hotspot.|
| wifiStandard10+ | [WifiStandard](#wifistandard10) | Yes| No| Wi-Fi standard used by the connected hotspot.|
| supportedWifiCategory12+ | [WifiCategory](#wificategory12) | Yes| No| Highest Wi-Fi category supported by the hotspot.|
| isHiLinkNetwork12+ | boolean | Yes| No| Whether the hotspot supports HiLink. The value **true** indicates that the hotspot supports HiLink. The value **false** means the opposite.|
## ConnState9+
Enumerates the WLAN connection states.
**System capability**: SystemCapability.Communication.WiFi.STA
| Name| Value| Description|
| -------- | -------- | -------- |
| SCANNING | 0 | The device is scanning for available APs.|
| CONNECTING | 1 | A WLAN connection is being established.|
| AUTHENTICATING | 2 | An authentication is being performed for a WLAN connection.|
| OBTAINING_IPADDR | 3 | The IP address of the WLAN connection is being acquired.|
| CONNECTED | 4 | A WLAN connection is established.|
| DISCONNECTING | 5 | The WLAN connection is being disconnected.|
| DISCONNECTED | 6 | The WLAN connection is disconnected.|
| UNKNOWN | 7 | Failed to set up the WLAN connection.|
## wifiManager.isConnected9+
isConnected(): boolean
Checks whether WLAN is connected.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| boolean | Returns **true** if WLAN is connected; returns **false** otherwise.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let ret = wifiManager.isConnected();
console.info("isConnected:" + ret);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.isFeatureSupported9+
isFeatureSupported(featureId: number): boolean
Checks whether the device supports the specified WLAN feature.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.Core
**Parameters**
| **Name**| **Type**| Mandatory| **Description**|
| -------- | -------- | -------- | -------- |
| featureId | number | Yes| Feature ID.|
**Feature IDs**
| Value| Description|
| -------- | -------- |
| 0x0001 | WLAN infrastructure mode|
| 0x0002 | 5 GHz feature|
| 0x0004 | Generic Advertisement Service (GAS)/Access Network Query Protocol (ANQP) feature|
| 0x0008 | Wi-Fi Direct|
| 0x0010 | SoftAP|
| 0x0040 | Wi-Fi Aware|
| 0x8000 | WLAN AP/STA concurrency|
| 0x8000000 | WPA3 Personal (WPA-3 SAE)|
| 0x10000000 | WPA3-Enterprise Suite B |
| 0x20000000 | Enhanced open feature|
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| boolean | Returns **true** if the feature is supported; returns **false** otherwise.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2401000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let featureId = 0;
let ret = wifiManager.isFeatureSupported(featureId);
console.info("isFeatureSupported:" + ret);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.getIpInfo9+
getIpInfo(): IpInfo
Obtains IPv4 information.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| [IpInfo](#ipinfo9) | IP information obtained.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let info = wifiManager.getIpInfo();
console.info("info:" + JSON.stringify(info));
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## IpInfo9+
Represents IPv4 information.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Type**| **Readable**| **Writable**| **Description**|
| -------- | -------- | -------- | -------- | -------- |
| ipAddress | number | Yes| No| IP address.|
| gateway | number | Yes| No| Gateway.|
| netmask | number | Yes| No| Subnet mask.|
| primaryDns | number | Yes| No| IP address of the preferred DNS server.|
| secondDns | number | Yes| No| IP address of the alternate DNS server.|
| serverIp | number | Yes| No| IP address of the DHCP server.|
| leaseDuration | number | Yes| No| Lease duration of the IP address, in seconds.|
## wifiManager.getIpv6Info10+
getIpv6Info(): Ipv6Info
Obtains IPv6 information.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| [Ipv6Info](#ipv6info10) | IPv6 information obtained.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let info = wifiManager.getIpv6Info();
console.info("info:" + JSON.stringify(info));
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## Ipv6Info10+
Represents the IPv6 information.
**System capability**: SystemCapability.Communication.WiFi.STA
| **Name**| **Type**| **Readable**| **Writable**| **Description**|
| -------- | -------- | -------- | -------- | -------- |
| linkIpv6Address | string | Yes| No| IPv6 address of the link.|
| globalIpv6Address | string | Yes| No| Global IPv6 address.|
| randomGlobalIpv6Address | string | Yes| No| Random global IPv6 address. This parameter is reserved.|
| uniqueIpv6Address12+ | string | Yes| No| Unique local address (ULA) in IPv6 format.|
| randomUniqueIpv6Address12+ | string | Yes| No| Random unique local address (RULA) in IPv6 format.|
| gateway | string | Yes| No| Gateway.|
| netmask | string | Yes| No| Subnet mask.|
| primaryDNS | string | Yes| No| IPv6 address of the preferred DNS server.|
| secondDNS | string | Yes| No| IPv6 address of the alternate DNS server.|
## wifiManager.getCountryCode9+
getCountryCode(): string
Obtains the country code.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.Core
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| string | Country code obtained.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2401000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let code = wifiManager.getCountryCode();
console.info("code:" + code);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.isBandTypeSupported10+
isBandTypeSupported(bandType: WifiBandType): boolean
Checks whether the current frequency band is supported.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| bandType | [WifiBandType](#wifibandtype10) | Yes| Wi-Fi band type.|
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| boolean | Returns **true** if the feature is supported; returns **false** otherwise.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified.
2. Incorrect parameter types. 3. Parameter verification failed. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let type = 0;
let isBandTypeSupported = wifiManager.isBandTypeSupported(type);
console.info("isBandTypeSupported:" + isBandTypeSupported);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.isMeteredHotspot11+
isMeteredHotspot(): boolean
Checks whether the Wi-Fi network connected to the device is a smartphone hotspot.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Return value**
| **Type**| **Description**|
| -------- | -------- |
| boolean | Returns **true** if the Wi-Fi network connected is a smartphone hotspot; returns **false** otherwise.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
| 2501001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let isMeteredHotspot = wifiManager.isMeteredHotspot();
console.info("isMeteredHotspot:" + isMeteredHotspot);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.getP2pLinkedInfo9+
getP2pLinkedInfo(): Promise<WifiP2pLinkedInfo>
Obtains P2P connection information. This API uses a promise to return the result.
**Required permissions**: ohos.permission.GET_WIFI_INFO
To obtain **groupOwnerAddr**, the caller must also have the ohos.permission.GET_WIFI_LOCAL_MAC permission, which is available only for system applications. Without this permission, an all-zero address is returned in **groupOwnerAddr**.
**System capability**: SystemCapability.Communication.WiFi.P2P
**Return value**
| Type| Description|
| -------- | -------- |
| Promise<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | Promise used to return the P2P connection information obtained.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.getP2pLinkedInfo9+
getP2pLinkedInfo(callback: AsyncCallback<WifiP2pLinkedInfo>): void
Obtains P2P link information. This API uses an asynchronous callback to return the result.
**Required permissions**: ohos.permission.GET_WIFI_INFO
To obtain **groupOwnerAddr**, the caller must also have the ohos.permission.GET_WIFI_LOCAL_MAC permission, which is available only for system applications. Without this permission, an all-zero address is returned in **groupOwnerAddr**.
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | Yes| Callback used to return the result. If the operation is successful, **err** is **0** and **data** is the P2P link information. If the operation fails, **err** is not **0**.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
wifiManager.getP2pLinkedInfo((err, data:wifiManager.WifiP2pLinkedInfo) => {
if (err) {
console.error("get p2p linked info error");
return;
}
console.info("get wifi p2p linked info: " + JSON.stringify(data));
});
wifiManager.getP2pLinkedInfo().then(data => {
console.info("get wifi p2p linked info: " + JSON.stringify(data));
});
```
## WifiP2pLinkedInfo9+
Represents the P2P link information.
**System capability**: SystemCapability.Communication.WiFi.P2P
| Name| Type| Readable| Writable| Description|
| -------- | -------- | -------- | -------- | -------- |
| connectState | [P2pConnectState](#p2pconnectstate9) | Yes| No| P2P connection state.|
| isGroupOwner | boolean | Yes| No| Whether it is the group owner (GO).|
| groupOwnerAddr | string | Yes| No| IP address of the group.|
## P2pConnectState9+
Enumerates the P2P connection states.
**System capability**: SystemCapability.Communication.WiFi.P2P
| Name| Value| Description|
| -------- | -------- | -------- |
| DISCONNECTED | 0 | Disconnected.|
| CONNECTED | 1 | Connected.|
## wifiManager.getCurrentGroup9+
getCurrentGroup(): Promise<WifiP2pGroupInfo>
Obtains the current P2P group information. This API uses a promise to return the result.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Return value**
| Type| Description|
| -------- | -------- |
| Promise<[WifiP2pGroupInfo](#wifip2pgroupinfo9)> | Promise used to return the P2P group information obtained. If the caller has the ohos.permission.GET_WIFI_PEERS_MAC permission (available only for system applications), **deviceAddress** in the return value is a real device address. Otherwise, **deviceAddress** is a random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.getCurrentGroup9+
getCurrentGroup(callback: AsyncCallback<WifiP2pGroupInfo>): void
Obtains the current P2P group information. This API uses an asynchronous callback to return the result.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback<[WifiP2pGroupInfo](#wifip2pgroupinfo9)> | Yes| Callback used to return the result. If the operation is successful, **err** is **0** and **data** is the group information obtained. If the operation fails, **error** is not **0**. If the caller has the ohos.permission.GET_WIFI_PEERS_MAC permission (available only for system applications), **deviceAddress** in the return value is a real device address. Otherwise, **deviceAddress** is a random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
// The current group information can be obtained only after the P2P group is created or the connection is successful.
wifiManager.getCurrentGroup((err, data:wifiManager.WifiP2pGroupInfo) => {
if (err) {
console.error("get current P2P group error");
return;
}
console.info("get current P2P group: " + JSON.stringify(data));
});
wifiManager.getCurrentGroup().then(data => {
console.info("get current P2P group: " + JSON.stringify(data));
});
```
## wifiManager.getP2pPeerDevices9+
getP2pPeerDevices(): Promise<WifiP2pDevice[]>
Obtains the peer device list in the P2P connection. This API uses a promise to return the result.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Return value**
| Type| Description|
| -------- | -------- |
| Promise<[WifiP2pDevice[]](#wifip2pdevice9)> | Promise used to return the peer device list. If the caller has the ohos.permission.GET_WIFI_PEERS_MAC permission (available only for system applications), **deviceAddress** in the return value is a real device address. Otherwise, **deviceAddress** is a random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.getP2pPeerDevices9+
getP2pPeerDevices(callback: AsyncCallback<WifiP2pDevice[]>): void
Obtains the peer device list in the P2P connection. This API uses an asynchronous callback to return the result.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback<[WifiP2pDevice[]](#wifip2pdevice9)> | Yes| Callback used to return the result. If the operation is successful, **err** is **0** and **data** is the peer device list obtained. If the operation fails, **err** is not **0**. If the caller has the ohos.permission.GET_WIFI_PEERS_MAC permission (available only for system applications), **deviceAddress** in the return value is a real device address. Otherwise, **deviceAddress** is a random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
// The peer device list can be obtained only after the P2P discovery is complete.
wifiManager.getP2pPeerDevices((err, data:wifiManager.WifiP2pDevice) => {
if (err) {
console.error("get P2P peer devices error");
return;
}
console.info("get P2P peer devices: " + JSON.stringify(data));
});
wifiManager.getP2pPeerDevices().then(data => {
console.info("get P2P peer devices: " + JSON.stringify(data));
});
```
## WifiP2pDevice9+
Represents the P2P device information.
**System capability**: SystemCapability.Communication.WiFi.P2P
| Name| Type| Readable| Writable| Description|
| -------- | -------- | -------- | -------- | -------- |
| deviceName | string | Yes| No| Device name.|
| deviceAddress | string | Yes| No| MAC address of the device.|
| deviceAddressType10+ | [DeviceAddressType](#deviceaddresstype10) | Yes| No| MAC address type of the device.|
| primaryDeviceType | string | Yes| No| Type of the primary device.|
| deviceStatus | [P2pDeviceStatus](#p2pdevicestatus9) | Yes| No| Device status.|
| groupCapabilities | number | Yes| No| Group capabilities.|
## P2pDeviceStatus9+
Enumerates the P2P device states.
**System capability**: SystemCapability.Communication.WiFi.P2P
| Name| Value| Description|
| -------- | -------- | -------- |
| CONNECTED | 0 | Connected.|
| INVITED | 1 | Invited.|
| FAILED | 2 | Failed.|
| AVAILABLE | 3 | Available.|
| UNAVAILABLE | 4 | Unavailable.|
## wifiManager.getP2pLocalDevice9+
getP2pLocalDevice(): Promise<WifiP2pDevice>
Obtains the local device information in the P2P connection. This API uses a promise to return the result.
**Required permissions**:
API version 11 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Return value**
| Type| Description|
| -------- | -------- |
| Promise<[WifiP2pDevice](#wifip2pdevice9)> | Promise used to return the local device information obtained.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.getP2pLocalDevice9+
getP2pLocalDevice(callback: AsyncCallback<WifiP2pDevice>): void
Obtains the local device information in the P2P connection. This API uses an asynchronous callback to return the result.
**Required permissions**:
API version 11 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| Name| Type| Mandatory| Description|
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback<[WifiP2pDevice](#wifip2pdevice9)> | Yes| Callback used to return the result. If the operation is successful, **err** is **0** and **data** is the local device information obtained. If the operation fails, **error** is not **0**.|
**Error codes**
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
// The local device information can be obtained only after a P2P group is created or the connection is successful.
wifiManager.getP2pLocalDevice((err, data:wifiManager.WifiP2pDevice) => {
if (err) {
console.error("get P2P local device error");
return;
}
console.info("get P2P local device: " + JSON.stringify(data));
});
wifiManager.getP2pLocalDevice().then(data => {
console.info("get P2P local device: " + JSON.stringify(data));
});
```
## wifiManager.createGroup9+
createGroup(config: WifiP2PConfig): void
Creates a P2P group.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| Mandatory| **Description**|
| -------- | -------- | -------- | -------- |
| config | [WifiP2PConfig](#wifip2pconfig9) | Yes| Group configuration. The default **DeviceAddressType** is random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Incorrect parameter types.
2. Parameter verification failed. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
let config:wifiManager.WifiP2PConfig = {
deviceAddress: "****",
netId: 0,
passphrase: "*****",
groupName: "****",
goBand: 0
}
wifiManager.createGroup(config);
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## WifiP2PConfig9+
Represents P2P group configuration.
**System capability**: SystemCapability.Communication.WiFi.P2P
| Name| Type| Readable| Writable| Description|
| -------- | -------- | -------- | -------- | -------- |
| deviceAddress | string | Yes| No| Device address.|
| deviceAddressType10+| [DeviceAddressType](#deviceaddresstype10) | Yes| No| Device address type.|
| netId | number | Yes| No| Network ID. The value **-1** indicates a temporary group, and **-2** indicates a persistent group.|
| passphrase | string | Yes| No| Passphrase of the group.|
| groupName | string | Yes| No| Name of the group.|
| goBand | [GroupOwnerBand](#groupownerband9) | Yes| No| Frequency band of the group.|
## GroupOwnerBand9+
Enumerates the P2P group frequency bands.
**System capability**: SystemCapability.Communication.WiFi.P2P
| Name| Value| Description|
| -------- | -------- | -------- |
| GO_BAND_AUTO | 0 | Auto.|
| GO_BAND_2GHZ | 1 | 2.4 GHz.|
| GO_BAND_5GHZ | 2 | 5 GHz.|
## wifiManager.removeGroup9+
removeGroup(): void
Removes this P2P group.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
wifiManager.removeGroup();
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.p2pConnect9+
p2pConnect(config: WifiP2PConfig): void
Sets up a P2P connection.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| Mandatory| **Description**|
| -------- | -------- | -------- | -------- |
| config | [WifiP2PConfig](#wifip2pconfig9) | Yes| P2P group configuration. The default **DeviceAddressType** is random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Incorrect parameter types.
2. Parameter verification failed. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvP2pConnectionChangeFunc = (result:wifiManager.WifiP2pLinkedInfo) => {
console.info("p2p connection change receive event: " + JSON.stringify(result));
wifiManager.getP2pLinkedInfo((err, data:wifiManager.WifiP2pLinkedInfo) => {
if (err) {
console.error('failed to get getP2pLinkedInfo: ' + JSON.stringify(err));
return;
}
console.info("get getP2pLinkedInfo: " + JSON.stringify(data));
});
}
wifiManager.on("p2pConnectionChange", recvP2pConnectionChangeFunc);
let recvP2pDeviceChangeFunc = (result:wifiManager.WifiP2pDevice) => {
console.info("p2p device change receive event: " + JSON.stringify(result));
}
wifiManager.on("p2pDeviceChange", recvP2pDeviceChangeFunc);
let recvP2pPeerDeviceChangeFunc = (result:wifiManager.WifiP2pDevice[]) => {
console.info("p2p peer device change receive event: " + JSON.stringify(result));
wifiManager.getP2pPeerDevices((err, data:wifiManager.WifiP2pDevice) => {
if (err) {
console.error('failed to get peer devices: ' + JSON.stringify(err));
return;
}
console.info("get peer devices: " + JSON.stringify(data));
let len = data.length;
for (let i = 0; i < len; ++i) {
if (data[i].deviceName === "my_test_device") {
console.info("p2p connect to test device: " + data[i].deviceAddress);
let config:wifiManager.WifiP2PConfig = {
deviceAddress:data[i].deviceAddress,
netId:-2,
passphrase:"",
groupName:"",
goBand:0,
}
wifiManager.p2pConnect(config);
}
}
});
}
wifiManager.on("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);
let recvP2pPersistentGroupChangeFunc = () => {
console.info("p2p persistent group change receive event");
wifiManager.getCurrentGroup((err, data:wifiManager.WifiP2pGroupInfo) => {
if (err) {
console.error('failed to get current group: ' + JSON.stringify(err));
return;
}
console.info("get current group: " + JSON.stringify(data));
});
}
wifiManager.on("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);
setTimeout(() => {wifiManager.off("p2pConnectionChange", recvP2pConnectionChangeFunc);}, 125 * 1000);
setTimeout(() => {wifiManager.off("p2pDeviceChange", recvP2pDeviceChangeFunc);}, 125 * 1000);
setTimeout(() => {wifiManager.off("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);}, 125 * 1000);
setTimeout(() => {wifiManager.off("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);}, 125 * 1000);
console.info("start discover devices -> " + wifiManager.startDiscoverDevices());
```
## wifiManager.p2pCancelConnect9+
p2pCancelConnect(): void
Cancels the P2P connection being set up.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
wifiManager.p2pCancelConnect();
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.startDiscoverDevices9+
startDiscoverDevices(): void
Starts to discover devices.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
wifiManager.startDiscoverDevices();
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## wifiManager.stopDiscoverDevices9+
stopDiscoverDevices(): void
Stops discovering devices.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | -------- |
| 201 | Permission denied. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
| 2801001 | Wi-Fi STA disabled. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
try {
wifiManager.stopDiscoverDevices();
}catch(error){
console.error("failed:" + JSON.stringify(error));
}
```
## WifiP2pGroupInfo9+
Represents the P2P group information.
**System capability**: SystemCapability.Communication.WiFi.P2P
| Name| Type| Readable| Writable| Description|
| -------- | -------- | -------- | -------- | -------- |
| isP2pGo | boolean | Yes| No| Whether the device is the group owner.|
| ownerInfo | [WifiP2pDevice](#wifip2pdevice9) | Yes| No| Device information of the group.|
| passphrase | string | Yes| No| Passphrase of the group.|
| interface | string | Yes| No| Interface name.|
| groupName | string | Yes| No| Group name.|
| networkId | number | Yes| No| Network ID.|
| frequency | number | Yes| No| Frequency of the group.|
| clientDevices | [WifiP2pDevice[]](#wifip2pdevice9) | Yes| No| List of connected devices.|
| goIpAddress | string | Yes| No| IP address of the group.|
## wifiManager.on('wifiStateChange')9+
on(type: 'wifiStateChange', callback: Callback<number>): void
Subscribes to WLAN state changes. When the service exits, call off(type: 'wifiStateChange', callback?: Callback<number>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiStateChange**.|
| callback | Callback<number> | Yes| Callback used to return the WLAN state.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**WLAN states**
| **Value**| **Description**|
| -------- | -------- |
| 0 | Deactivated|
| 1 | Activated|
| 2 | Activating|
| 3 | Deactivating|
## wifiManager.off('wifiStateChange')9+
off(type: 'wifiStateChange', callback?: Callback<number>): void
Unsubscribes from WLAN state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiStateChange**.|
| callback | Callback<number> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvPowerNotifyFunc = (result:number) => {
console.info("Receive power state change event: " + result);
}
// Register an event.
wifiManager.on("wifiStateChange", recvPowerNotifyFunc);
// Unregister an event.
wifiManager.off("wifiStateChange", recvPowerNotifyFunc);
```
## wifiManager.on('wifiConnectionChange')9+
on(type: 'wifiConnectionChange', callback: Callback<number>): void
Subscribes to WLAN connection state changes. When the service exits, call off(type: 'wifiConnectionChange', callback?: Callback<number>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiConnectionChange**.|
| callback | Callback<number> | Yes| Callback used to return the WLAN connection state.|
**WLAN connection states**
| **Value**| **Description**|
| -------- | -------- |
| 0 | Disconnected.|
| 1 | Connected.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
## wifiManager.off('wifiConnectionChange')9+
off(type: 'wifiConnectionChange', callback?: Callback<number>): void
Unsubscribes from WLAN connection state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiConnectionChange**.|
| callback | Callback<number> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvWifiConnectionChangeFunc = (result:number) => {
console.info("Receive wifi connection change event: " + result);
}
// Register an event.
wifiManager.on("wifiConnectionChange", recvWifiConnectionChangeFunc);
// Unregister an event.
wifiManager.off("wifiConnectionChange", recvWifiConnectionChangeFunc);
```
## wifiManager.on('wifiScanStateChange')9+
on(type: 'wifiScanStateChange', callback: Callback<number>): void
Subscribes to WLAN scan state changes. When the service exits, call off(type: 'wifiScanStateChange', callback?: Callback<number>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiScanStateChange**.|
| callback | Callback<number> | Yes| Callback used to return the WLAN scan state.|
**WLAN scan states**
| **Value**| **Description**|
| -------- | -------- |
| 0 | Scan failed.|
| 1 | Scan successful.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
## wifiManager.off('wifiScanStateChange')9+
off(type: 'wifiScanStateChange', callback?: Callback<number>): void
Unsubscribes from WLAN scan state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiScanStateChange**.|
| callback | Callback<number> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvWifiScanStateChangeFunc = (result:number) => {
console.info("Receive Wifi scan state change event: " + result);
}
// Register an event.
wifiManager.on("wifiScanStateChange", recvWifiScanStateChangeFunc);
// Unregister an event.
wifiManager.off("wifiScanStateChange", recvWifiScanStateChangeFunc);
```
## wifiManager.on('wifiRssiChange')9+
on(type: 'wifiRssiChange', callback: Callback<number>): void
Subscribes to RSSI changes. When the service exits, call off(type: 'wifiRssiChange', callback?: Callback<number>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiRssiChange**.|
| callback | Callback<number> | Yes| Callback used to return the RSSI, in dBm.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
## wifiManager.off('wifiRssiChange')9+
off(type: 'wifiRssiChange', callback?: Callback<number>): void
Unsubscribes from RSSI changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.STA
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **wifiRssiChange**.|
| callback | Callback<number> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2501000 | Operation failed.|
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvWifiRssiChangeFunc = (result:number) => {
console.info("Receive wifi rssi change event: " + result);
}
// Register an event.
wifiManager.on("wifiRssiChange", recvWifiRssiChangeFunc);
// Unregister an event.
wifiManager.off("wifiRssiChange", recvWifiRssiChangeFunc);
```
## wifiManager.on('hotspotStateChange')9+
on(type: 'hotspotStateChange', callback: Callback<number>): void
Subscribes to hotspot state changes. When the service exits, call off(type: 'hotspotStateChange', callback?: Callback<number>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.AP.Core
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **hotspotStateChange**.|
| callback | Callback<number> | Yes| Callback used to return the hotspot state.|
**Hotspot states**
| **Value**| **Description**|
| -------- | -------- |
| 0 | Deactivated|
| 1 | Activated|
| 2 | Activating|
| 3 | Deactivating|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2601000 | Operation failed. |
## wifiManager.off('hotspotStateChange')9+
off(type: 'hotspotStateChange', callback?: Callback<number>): void
Unsubscribes from hotspot state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.AP.Core
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **hotspotStateChange**.|
| callback | Callback<number> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2601000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvHotspotStateChangeFunc = (result:number) => {
console.info("Receive hotspot state change event: " + result);
}
// Register an event.
wifiManager.on("hotspotStateChange", recvHotspotStateChangeFunc);
// Unregister an event.
wifiManager.off("hotspotStateChange", recvHotspotStateChangeFunc);
```
## wifiManager.on('p2pStateChange')9+
on(type: 'p2pStateChange', callback: Callback<number>): void
Subscribes to P2P state changes. When the service exits, call off(type: 'p2pStateChange', callback?: Callback<number>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pStateChange**.|
| callback | Callback<number> | Yes| Callback used to return the P2P state.|
**P2P states**
| **Value**| **Description**|
| -------- | -------- |
| 1 | Available|
| 2 | Opening|
| 3 | Opened|
| 4 | Closing|
| 5 | Closed|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.off('p2pStateChange')9+
off(type: 'p2pStateChange', callback?: Callback<number>): void
Unsubscribes from P2P state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pStateChange**.|
| callback | Callback<number> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvP2pStateChangeFunc = (result:number) => {
console.info("Receive p2p state change event: " + result);
}
// Register an event.
wifiManager.on("p2pStateChange", recvP2pStateChangeFunc);
// Unregister an event.
wifiManager.off("p2pStateChange", recvP2pStateChangeFunc);
```
## wifiManager.on('p2pConnectionChange')9+
on(type: 'p2pConnectionChange', callback: Callback<WifiP2pLinkedInfo>): void
Subscribes to P2P connection state changes. When the service exits, call off(type: 'p2pConnectionChange', callback?: Callback<WifiP2pLinkedInfo>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pConnectionChange**.|
| callback | Callback<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | Yes| Callback used to return the WLAN state.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.off('p2pConnectionChange')9+
off(type: 'p2pConnectionChange', callback?: Callback<WifiP2pLinkedInfo>): void
Unsubscribes from P2P connection state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pConnectionChange**.|
| callback | Callback<[WifiP2pLinkedInfo](#wifip2plinkedinfo9)> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvP2pConnectionChangeFunc = (result:wifiManager.WifiP2pLinkedInfo) => {
console.info("Receive p2p connection change event: " + result);
}
// Register an event.
wifiManager.on("p2pConnectionChange", recvP2pConnectionChangeFunc);
// Unregister an event.
wifiManager.off("p2pConnectionChange", recvP2pConnectionChangeFunc);
```
## wifiManager.on('p2pDeviceChange')9+
on(type: 'p2pDeviceChange', callback: Callback<WifiP2pDevice>): void
Subscribes to P2P device status changes. When the service exits, call off(type: 'p2pDeviceChange', callback?: Callback<WifiP2pDevice>) to unregister the callback registered.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pDeviceChange**.|
| callback | Callback<[WifiP2pDevice](#wifip2pdevice9)> | Yes| Callback used to return the WLAN state.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.off('p2pDeviceChange')9+
off(type: 'p2pDeviceChange', callback?: Callback<WifiP2pDevice>): void
Unsubscribes from P2P device state changes.
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pDeviceChange**.|
| callback | Callback<[WifiP2pDevice](#wifip2pdevice9)> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 20110+ | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvP2pDeviceChangeFunc = (result:wifiManager.WifiP2pDevice) => {
console.info("Receive p2p device change event: " + result);
}
// Register an event.
wifiManager.on("p2pDeviceChange", recvP2pDeviceChangeFunc);
// Unregister an event.
wifiManager.off("p2pDeviceChange", recvP2pDeviceChangeFunc);
```
## wifiManager.on('p2pPeerDeviceChange')9+
on(type: 'p2pPeerDeviceChange', callback: Callback<WifiP2pDevice[]>): void
Subscribes to P2P peer device status changes. When the service exits, call off(type: 'p2pPeerDeviceChange', callback?: Callback<WifiP2pDevice[]>) to unregister the callback registered.
**Required permissions**:
API version 10 and later: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pPeerDeviceChange**.|
| callback | Callback<[WifiP2pDevice[]](#wifip2pdevice9)> | Yes| Callback used to return the peer device status. If the caller has the ohos.permission.GET_WIFI_PEERS_MAC permission (available only for system applications), **deviceAddress** in the return value is a real device address. Otherwise, **deviceAddress** is a random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.off('p2pPeerDeviceChange')9+
off(type: 'p2pPeerDeviceChange', callback?: Callback<WifiP2pDevice[]>): void
Unsubscribes from P2P peer device state changes.
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pPeerDeviceChange**.|
| callback | Callback<[WifiP2pDevice[]](#wifip2pdevice9)> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event. If the caller has the ohos.permission.GET_WIFI_PEERS_MAC permission (available only for system applications), **deviceAddress** in the return value is a real device address. Otherwise, **deviceAddress** is a random device address.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 20110+ | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvP2pPeerDeviceChangeFunc = (result:wifiManager.WifiP2pDevice[]) => {
console.info("Receive p2p peer device change event: " + result);
}
// Register an event.
wifiManager.on("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);
// Unregister an event.
wifiManager.off("p2pPeerDeviceChange", recvP2pPeerDeviceChangeFunc);
```
## wifiManager.on('p2pPersistentGroupChange')9+
on(type: 'p2pPersistentGroupChange', callback: Callback<void>): void
Subscribes to P2P persistent group changes. When the service exits, call off(type: 'p2pPersistentGroupChange', callback?: Callback<void>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pPersistentGroupChange**.|
| callback | Callback<void> | Yes| Callback used to return the WLAN state.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.off('p2pPersistentGroupChange')9+
off(type: 'p2pPersistentGroupChange', callback?: Callback<void>): void
Unsubscribes from P2P persistent group state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pPersistentGroupChange**.|
| callback | Callback<void> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvP2pPersistentGroupChangeFunc = (result:void) => {
console.info("Receive p2p persistent group change event: " + result);
}
// Register an event.
wifiManager.on("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);
// Unregister an event.
wifiManager.off("p2pPersistentGroupChange", recvP2pPersistentGroupChangeFunc);
```
## wifiManager.on('p2pDiscoveryChange')9+
on(type: 'p2pDiscoveryChange', callback: Callback<number>): void
Subscribes to P2P device discovery changes. When the service exits, call off(type: 'p2pDiscoveryChange', callback?: Callback<number>) to unregister the callback registered.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pDiscoveryChange**.|
| callback | Callback<number> | Yes| Callback used to return the P2P device discovery change.|
**P2P discovered device states**
| **Value**| **Description**|
| -------- | -------- |
| 0 | Initial state.|
| 1 | Discovered.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
## wifiManager.off('p2pDiscoveryChange')9+
off(type: 'p2pDiscoveryChange', callback?: Callback<number>): void
Unsubscribes from P2P device discovery state changes.
**Required permissions**: ohos.permission.GET_WIFI_INFO
**System capability**: SystemCapability.Communication.WiFi.P2P
**Parameters**
| **Name**| **Type**| **Mandatory**| **Description**|
| -------- | -------- | -------- | -------- |
| type | string | Yes| Event type, which has a fixed value of **p2pDiscoveryChange**.|
| callback | Callback<number> | No| Callback to unregister. If this parameter is not specified, this API unregisters all callbacks for the specified event.|
**Error codes**
For details about the error codes, see [Wi-Fi Error Codes](errorcode-wifi.md).
| **ID**| **Error Message**|
| -------- | ---------------------------- |
| 201 | Permission denied. |
| 401 | Invalid parameters. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
| 801 | Capability not supported. |
| 2801000 | Operation failed. |
**Example**
```ts
import { wifiManager } from '@kit.ConnectivityKit';
let recvP2pDiscoveryChangeFunc = (result:number) => {
console.info("Receive p2p discovery change event: " + result);
}
// Register an event.
wifiManager.on("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc);
// Unregister an event.
wifiManager.off("p2pDiscoveryChange", recvP2pDiscoveryChangeFunc);
```